Avez-vous déjà voulu exécuter des commandes PowerShell sur une machine distante depuis le confort de votre poste de travail ? Eh bien, avec PowerShell Remoting, vous le pouvez. Avec PowerShell distant, vous pouvez exécuter des commandes et des scripts sur plusieurs systèmes distants de manière durable.
Intéressant ? Continuez à lire pour apprendre comment dompter ces machines distantes à la manière de PowerShell.
Prérequis
Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir au moins trois ordinateurs avec PowerShell 7. L’un sera votre ordinateur de gestion, et les deux autres seront les machines distantes.
Ce tutoriel utilisera les ordinateurs suivants.
- A Windows 10 PC with PowerShell 7 installed as the management computer. You will launch remote commands from this machine.
- A Windows 10 PC with PowerShell 7 installed. This machine will be the endpoint for remote PowerShell over WinRM.
- A user account on the remote Windows machine with local administrator rights. This tutorial uses a user account called ma.
- Machine Linux avec SSHD activé pour servir de point de terminaison PowerShell distant via SSH. Ce tutoriel utilise Fedora 35.
- Un compte utilisateur pour exécuter des commandes à distance sur la machine Linux. Le compte devrait avoir sudo et l’accès SSH. Ce tutoriel utilise un compte nommé test. Créez un compte utilisateur à ce stade si vous n’en avez pas sur votre machine Linux
Activation de PowerShell à Distance sur Windows via WinRM
Lorsque vous installez PowerShell 7, il y a une option pour activer l’exécution à distance de PowerShell, et vous avez peut-être activé cette option à ce moment-là. Mais pour être sûr, suivez les étapes ci-dessous pour activer PowerShell à distance.
1. Connectez-vous au PC Windows 10 distant.
2. Ouvrez PowerShell en tant qu’administrateur.
3. Exécutez la commande ci-dessous pour activer PowerShell à distance.
La commande exécute plusieurs modifications de configuration, que vous verrez sur la console.

Activation de PowerShell à distance sur Linux via SSH
WinRM est exclusif à Windows, ce qui signifie que vous ne pouvez pas activer PowerShell à distance sur Linux avec lui. Au lieu de cela, vous pouvez activer PowerShell à distance via SSH sur Linux. En supposant que vous avez déjà installé PowerShell, suivez les étapes ci-dessous.
1. Connectez-vous à votre système Linux distant et ouvrez une session de terminal.
2. Ouvrez le fichier de configuration du serveur SSH dans un éditeur de texte. Utilisez votre choix d’éditeurs de texte, tels que Gedit, Sublime ou Nano. Cet exemple utilise Gedit.
3. Ensuite, ajoutez la ligne suivante au fichier. Cette ligne crée un sous-système SSH qui héberge un processus PowerShell.

4. Fermez l’éditeur.
5. Enfin, redémarrez le serveur SSH en exécutant la commande suivante.
Ajout des hôtes distants PowerShell à distance sur la machine locale
À ce stade, votre ordinateur distant est prêt à recevoir des commandes. Cependant, votre ordinateur de gestion peut refuser de se connecter aux hôtes PowerShell distants s’ils ne sont pas sur la liste des hôtes approuvés. Pour éviter d’éventuels problèmes d’accès distant, vous devez ajouter les hôtes distants à vos hôtes de confiance.
Ouvrez PowerShell en tant qu’administrateur sur votre ordinateur de gestion.
Exécutez la commande winrm
ci-dessous. Cette commande ajoute vos machines distantes Windows (192.168.8.107
) et Linux (192.168.8.171
) à la liste des hôtes de confiance de votre ordinateur.

Exécution de commandes sur des ordinateurs distants
Avec tous les éléments en place, vous exécuterez des commandes sur la machine distante dans cette section.
1. Ouvrez une nouvelle session PowerShell sur votre ordinateur de gestion.
2. Maintenant, exécutez la commande Invoke-Command
ci-dessous pour lister les cinq premiers services sur la machine distante en tant qu’utilisateur ma
. La commande à exécuter apparaît entre les accolades de l’option ScriptBlock
, comme indiqué ci-dessous.

3. Pour effectuer la même opération avec un hôte Linux distant, exécutez plutôt la commande ci-dessous. Remarquez que -HostName
remplace -ComputerName
, et -UserName
remplace -ComputerName
. Ces paramètres indiquent au cmdlet Invoke-Command
que la cible est un hôte SSH.

Exécution de scripts sur des ordinateurs distants
Vous pouvez également exécuter un fichier de script PowerShell sur un ordinateur distant avec le cmdlet Invoke-Command
. Mais au lieu de spécifier le paramètre -ScriptBlock
, vous spécifierez le paramètre -FilePath
suivi du chemin local du script.
1. Tout d’abord, créez un fichier de script PowerShell appelé nametime.ps1
sur votre ordinateur local.
2. Ouvrez le script dans votre éditeur de script préféré et ajoutez le code suivant. Enregistrez le fichier par la suite.

3. Exécutez la cmdlet Invoke-command
avec le paramètre -FilePath
. Le -FilePath
doit pointer vers le fichier de script. Dans cet exemple, le fichier de script se trouve dans le même répertoire de travail.

Gestion d’un ordinateur distant de manière interactive
Dans la section précédente, vous avez vu comment exécuter des commandes individuelles sur une machine distante. Dans cette section, vous apprendrez à ouvrir une session interactive, de sorte que vous puissiez exécuter plusieurs commandes sur la machine distante comme si elle était locale.
1. Exécutez la commande Enter-PSSession
pour démarrer une session à distance sur la machine à 192.168.8.107
en tant qu’utilisateur ma
.
Entrez le mot de passe du compte utilisateur distant, ma, à l’invite comme indiqué ci-dessous.

Vous verrez un nouvel indicateur, comme indiqué ci-dessous. L’adresse IP entre crochets indique l’hôte PowerShell distant.

3. Listez les fichiers dans le répertoire de travail actuel avec la commande dir
, comme indiqué ci-dessous. Vous pouvez exécuter autant de commandes PowerShell que vous le souhaitez dans une session dir
Le contenu du répertoire devrait s’afficher à l’écran, comme sur la capture d’écran ci-dessous.

4. Exécutez la cmdlet Exit-PSSession
ci-dessous pour quitter la session une fois que vous avez terminé de gérer la machine distante.
À la sortie, vous devriez revenir à une invite locale, comme sur la capture d’écran ci-dessous

Déconnexion et reconnexion des sessions PowerShell à distance
Il est possible de stocker une session de manière persistante en tant qu’alternative aux sessions interactives ou aux commandes ponctuelles. Le stockage d’une session vous permet de basculer entre les sessions sans perdre le contexte. Dans cette section, vous apprendrez à créer et à gérer des sessions persistantes.
1. Exécutez la cmdlet New-PSSession
pour créer une session sur l’ordinateur distant, 192.168.8.107
, en tant qu’utilisateur ma
(-Credential
). Enregistrez la session dans la variable $var
, comme suit.
2. Exécutez la variable $var
pour afficher son contenu comme suit
Comme indiqué ci-dessous, vous devriez voir un objet de session avec un RemoteMachine ComputerType et un State définis sur Opened.

3. Exécutez la commande Enter-PSSession
pour entrer dans la session stockée dans $var
.
Si tout va bien, l’invite changera en une invite à distance sans autre sortie, comme indiqué ci-dessous.

4. Créez une variable, $rem1
, à l’intérieur de la session. Utilisez n’importe quel nom de variable et chaîne d’identificateur qui vous convient. Vous utiliserez cette variable plus tard pour déterminer si vous êtes connecté à la même session.
5. Exécutez la commande ci-dessous pour quitter la session PowerShell à distance.

6. Rétablissez une session PowerShell à distance.
7. Exécutez la variable $rem1
à l’invite de session à distance, comme indiqué ci-dessous, pour afficher sa valeur.
Vous devriez voir la même valeur que vous avez définie précédemment avant de quitter la session PowerShell à distance, confirmant que vous vous êtes reconnecté à la même session.

8. Exécutez la commande Exit-PSSession
pour quitter la session une fois de plus comme suit.
9. Enfin, exécutez Invoke-Command
avec l’option session
définie sur $var
pour afficher le nom d’hôte de la machine distante dans la même session à distance. Cette méthode est une alternative pour exécuter des commandes dans la même session sans se connecter, se déconnecter et se reconnecter manuellement à une seule session.

10. Exécutez la commande Remove-PSSession
pour supprimer la session stockée dans $var
complètement.
Conclusion
Félicitations ! En arrivant à la fin de ce tutoriel, vous avez appris comment gérer un système Windows ou Linux avec PowerShell à distance. Ce guide visait à vous mettre le pied à l’étrier. Pourquoi ne pas plonger plus profondément avec PowerShell sur Linux via une session à distance ?