PowerShell est une puissante console de commande incluse avec les versions modernes de Windows. L'une de ses fonctionnalités les plus utiles est la possibilité d'exécuter des commandes sur des serveurs distants. Cela peut être utile aux administrateurs système qui gèrent plusieurs serveurs Windows.
Étape 1: autoriser l'accès à distance
Tout d'abord, nous devons autoriser l'accès à distance. Sur le serveur auquel vous souhaitez accéder à distance, ouvrez PowerShell avec des privilèges administratifs (faites donc un clic droit sur PowerShell et cliquez sur «Exécuter en tant qu'administrateur»). Exécutez la commande suivante:
Enable-PSRemoting -Force
Cela démarre le service WinRM, s'assure qu'il démarre automatiquement et configure votre pare-feu afin qu'il autorise les connexions entrantes.
Sur l'ordinateur (à partir duquel vous souhaitez vous connecter), exécutez la commande suivante avec des privilèges administratifs:
Enable-PSRemoting -Force
Nous devrons nous assurer que les deux ordinateurs se font confiance. Pour ce faire, nous devons configurer le paramètre "TrustedHosts". Si vous souhaitez autoriser les connexions à votre ordinateur / serveur à partir de tous les ordinateurs, exécutez:
Set-Item wsman:\localhost\client\trustedhosts *
Si vous souhaitez limiter cela à certains ordinateurs, utilisez la commande suivante. Remplacez la liste séparée par des virgules de 0.0.0.0, 1.1.1.1, 2.2.2.2 et 3.3.3.3 par des adresses IP qui auront accès.
Set-Item wsman:\localhost\client\trustedhosts 0.0.0.0,1.1.1.1,2.2.2.2,3.3.3.3
Redémarrez maintenant WinRM:
Restart-Service WinRM
Étape 2: tester la connexion
Pour tester la connexion, accédez à l'ordinateur à partir duquel vous souhaitez vous connecter et exécutez:
Test-WsMan ipaddress
Remplacez ipaddresspar l'adresse IP de l'autre ordinateur / serveur.
Étape 3: ouverture des ports
La première commande que nous avons exécutée ( Enable-PSRemoting -Force) configurera automatiquement le pare-feu afin qu'il accepte les connexions entrantes pour l'accès à distance. Cependant, s'il y a quelque chose devant le pare-feu (comme votre routeur), vous devrez peut-être également configurer la redirection de port. Les ports utilisés sont:
- 5985 pour HTTP
- 5986 pour HTTPS
Étape 4: Exécution de commandes
Ce qui suit est utilisé pour exécuter des commandes sur un serveur distant:
Invoke-Command -ComputerName ipaddress -ScriptBlock { command } -credential username
Remplacez ipaddresspar l'adresse IP du serveur, commandpar la commande que vous souhaitez exécuter sur ce serveur et usernamepar le nom d'utilisateur de l'utilisateur qui exécutera la commande.
Si vous ne souhaitez pas utiliser Invoke-Commandpour chaque commande, vous pouvez démarrer une session à la place. Chaque commande que vous tapez sera alors exécutée sur le serveur distant avec les informations d'identification spécifiées. La syntaxe pour démarrer une session est la suivante:
Enter-PSSession -ComputerName ipaddress -Credential username
Remplacez ipaddresspar l'adresse IP du serveur et usernamepar l'utilisateur qui exécutera la commande. Chaque commande que vous tapez à l'avenir sera exécutée sur le serveur distant.