Utiliser Windows PowerShell pour administrer un serveur à distance
Le personnel d’administration informatique de Contoso se focalise de plus en plus sur l’exécution à distance des tâches d’administration à partir de l’objet qu’il gère. Une zone d’intérêt particulier est la possibilité de tirer parti de Windows PowerShell pour administrer et gérer à distance l’infrastructure informatique de Contoso. Vous pouvez utiliser la communication à distance Windows PowerShell pour y parvenir.
Exigences relatives à la communication à distance
La communication à distance nécessite que vous disposiez de Windows PowerShell sur votre ordinateur local et que Windows Remote Management soit activé sur les ordinateurs distants auxquels vous souhaitez vous connecter. Vous devez également activer la communication à distance Windows PowerShell.
Notes
La communication à distance Windows PowerShell est activée par défaut dans Windows Server, mais vous devez l’activer sur Windows 10.
Pour activer la communication à distance Windows PowerShell, utilisez l’une des procédures suivantes. À partir d’une invite de commandes avec élévation de privilèges (ou invite Windows PowerShell (Admin)), exécutez la commande suivante :
Winrm quickconfig
Pour activer la communication à distance, vous pouvez également utiliser l’applet de commande Windows PowerShell suivante :
Enable-PSremoting -force
Important
Windows Remote Management communique via HTTP. Par défaut, Windows Remote Management et la communication à distance Windows PowerShell utilisent le port TCP 5985 pour les connexions entrantes non chiffrées, et le port TCP 5986 pour les connexions chiffrées entrantes.
Notes
Les applications qui utilisent Windows Remote Management, telles que Windows PowerShell, peuvent également appliquer leur propre chiffrement aux données transmises au service Windows Remote Management.
Tous les fichiers et autres ressources nécessaires pour exécuter une commande particulière doivent se trouver sur l’ordinateur distant, car les commandes de communication à distance ne copient aucune ressource. Vous pouvez toutefois exécuter des scripts locaux. Cela est dû au fait que le contenu du script est envoyé à l’ordinateur distant plutôt qu’au fichier de script lui-même.
Pour effectuer l’administration à distance, les administrateurs doivent être autorisés à :
- Se connecter à l’ordinateur distant
- Exécuter Windows PowerShell
- Accéder aux magasins de données et au registre sur l’ordinateur distant
Attention
L’activation de la communication à distance sur des ordinateurs dotés d’une carte d’interface réseau (NIC) affectée au profil d’emplacement réseau public génère une erreur. Vous pouvez utiliser Enable-PSremoting -force
pour contourner cette restriction et forcer la communication à distance sur un appareil doté d’une NIC publique.
Exécuter des applets de commande sur des ordinateurs distants
Plusieurs applets de commande incluent un paramètre ComputerName qui vous permet de récupérer des objets à partir d’ordinateurs distants. Ces applets de commande n’utilisent pas la communication à distance Windows PowerShell pour communiquer. Vous pouvez donc utiliser le paramètre ComputerName dans ces applets de commande sur n’importe quel ordinateur exécutant Windows PowerShell. Vous n’avez pas besoin de configurer les ordinateurs pour la communication à distance Windows PowerShell, ni de vous conformer à la configuration requise pour la communication à distance.
Le tableau suivant fournit plus d’informations sur le paramètre ComputerName.
Commande | Description |
---|---|
Get-Command –ParameterName ComputerName |
Recherche les applets de commande qui utilisent le paramètre ComputerName. |
Get-Help <cmdlet-name> -parameter ComputerName |
Déterminez si le paramètre ComputerName requiert la communication à distance Windows PowerShell. |
Traitement de commandes distantes
Lorsque vous vous connectez à un ordinateur distant et lui envoyez une commande distante, la commande est transmise via le réseau à une instance Windows PowerShell sur l’ordinateur distant, puis s’exécute sur celle-ci. Les résultats de la commande sont renvoyés à l’ordinateur local et s’affichent dans la session Windows PowerShell sur l’ordinateur local.
Toutes les entrées locales d’une commande distante sont collectées avant d’être envoyées à l’ordinateur distant. Toutefois, la sortie est retournée à l’ordinateur local lors de sa génération. Lorsque vous vous connectez à un ordinateur distant, le système utilise les informations d’identification du nom d’utilisateur et du mot de passe sur l’ordinateur local pour vous authentifier auprès de l’ordinateur distant.
Notes
Par défaut, le protocole d’authentification Kerberos version 5 (V5) est utilisé pour effectuer l’autorisation et l’authentification. Par conséquent, un domaine AD DS est requis.
Conseil
Dans les situations où l’ordinateur distant n’est pas dans un domaine ou se trouve dans un domaine non approuvé, vous pouvez autoriser un ordinateur client à se connecter en définissant les ordinateurs distants comme des hôtes approuvés.
Les applets de commande suivantes prennent en charge la communication à distance.
Invoke-Command
Enter-PSSession
Exit-PSSession
Disconnect-PSSession
Receive-PSSession
Connect-PSSession
Conseil
Vous pouvez créer des onglets distants à l’aide de Windows PowerShell ISE. Pour effectuer cette tâche, utilisez l’option Nouvel onglet PowerShell à distance dans le menu Fichier de Windows PowerShell ISE.
Lorsque vous implémentez la communication à distance, vous pouvez vous connecter aux ordinateurs distants à l’aide d’une session temporaire, ou vous pouvez créer une session persistante.
Créer une session temporaire
Pour une session temporaire, vous démarrez la session, exécutez les commandes, puis fermez la session. Il s’agit d’une méthode efficace pour exécuter une seule commande ou plusieurs commandes sans rapport entre elles, même sur un grand nombre d’ordinateurs distants.
Notes
Les variables ou fonctions définies dans les commandes ne sont plus disponibles une fois que vous fermez la connexion.
Pour créer une connexion temporaire, utilisez l’applet de commande Invoke-Command
avec le paramètre –ComputerName pour spécifier les ordinateurs distants. Utilisez ensuite le paramètre –ScriptBlock pour spécifier la commande. Par exemple, la commande suivante exécute Get-EventLog
sur l’ordinateur SEA-DC1 :
Invoke-Command –ComputerName SEA-DC1 –ScriptBlock {Get-EventLog –log system}
Créer une session persistante
Pour créer une connexion permanente avec un autre ordinateur, utilisez l’applet de commande New-PSSession
. Par exemple, la commande suivante crée une session sur un ordinateur distant et enregistre la session dans la variable $s :
$s = New-PSSession –ComputerName SEA-DC1
Utilisez l'applet de commande Enter-PSSession
pour vous connecter et démarrer une session interactive. Par exemple, après avoir ouvert une nouvelle session sur SEA-DC1, la commande suivante démarre une session interactive avec l’ordinateur :
Enter-PSSession $s
Une fois que vous avez ouvert une session, l’invite de commandes Windows PowerShell sur votre ordinateur local change pour indiquer la connexion.
La session interactive reste ouverte jusqu’à ce que vous la fermiez. Cela vous permet d’exécuter autant de commandes que nécessaire. Pour fermer la session interactive, entrez la commande suivante :
Exit-PSSession
Exécuter des commandes distantes sur plusieurs ordinateurs
Pour les sessions temporaires, l’applet de commande Invoke-Command
accepte plusieurs noms d’ordinateurs. Pour les connexions persistantes, le paramètre Session accepte plusieurs sessions Windows PowerShell. Pour exécuter une commande distante sur plusieurs ordinateurs, incluez tous les noms d’ordinateurs dans le paramètre ComputerName avec l’applet de commande Invoke-Command
, et séparez les noms par des virgules, comme illustré dans l’exemple suivant :
Invoke-Command -ComputerName SEA-DC1, SEA-SVR1, SEA-SVR2 -ScriptBlock {Get-Culture}
Pour les sessions persistantes, vous pouvez également exécuter une commande dans plusieurs sessions Windows PowerShell. Les commandes suivantes créent des sessions Windows PowerShell sur SEA-DC1, SEA-SVR1 et SEA-SVR2, puis exécutent une commande Get-Culture
dans chaque session Windows PowerShell :
$s = New-PSSession -ComputerName SEA-DC1, SEA-SVR1, SEA-SVR2
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
Conseil
Pour inclure l’ordinateur local dans la liste des ordinateurs, entrez le nom de l’ordinateur local, un point (.) ou localhost.
Comment exécuter un script sur des ordinateurs distants
Pour exécuter un script local sur des ordinateurs distants, utilisez le paramètre FilePath avec Invoke-Command
. La commande suivante exécute le script Sample.ps1 sur les ordinateurs SEA-DC1 et SEA-SVR1 :
Invoke-Command -ComputerName SEA-DC1, SEA-SVR1 –FilePath C:\Test\Sample.ps1
Les résultats du script sont retournés à l’ordinateur local. En utilisant le paramètre FilePath, vous n’avez pas besoin de copier de fichiers sur les ordinateurs distants.
Démonstration
La vidéo suivante montre comment gérer un serveur Windows distant à l’aide de Windows PowerShell. Les principales étapes du processus sont les suivantes :
Lancez une invite PowerShell avec élévation de privilèges.
Créez une session de communication à distance PowerShell en exécutant la commande suivante :
Enter-PSSession -ComputerName SEA-DC1
Récupérez des informations sur le serveur, telles que le nom et l’adresse IP, à l’aide des applets de commande Windows PowerShell standard.
Vérifiez l’état du service IIS et redémarrez ce service à l’aide de la commande suivante :
Get-Service -Name IISAdmin | Restart-Service