Exécution de commandes à distanceRunning Remote Commands

Vous pouvez exécuter des commandes sur un ordinateur ou plusieurs centaines au moyen d'une seule commande PowerShell.You can run commands on one or hundreds of computers with a single PowerShell command. Pour communiquer à distance, Windows PowerShell fait appel à différentes technologies, notamment WMI, RPC et WS-Management.Windows PowerShell supports remote computing by using various technologies, including WMI, RPC, and WS-Management.

PowerShell Core prend en charge WMI, WS-Management et la communication à distance SSH.PowerShell Core supports WMI, WS-Management, and SSH remoting. RPC n’est plus pris en charge.RPC is no longer supported.

Pour plus d’informations sur la communication à distance dans PowerShell Core, consultez les articles suivants :For more information about remoting in PowerShell Core, see the following articles:

Communication à distance Windows PowerShell sans configurationWindows PowerShell Remoting Without Configuration

De nombreuses applets de commande Windows PowerShell possèdent le paramètre ComputerName, qui vous permet de collecter des données et de modifier les paramètres sur un ou plusieurs ordinateurs distants.Many Windows PowerShell cmdlets have the ComputerName parameter that enables you to collect data and change settings on one or more remote computers. Ces cmdlets utilisent différents protocoles de communication et fonctionnent sur tous les systèmes d’exploitation Windows sans configuration spéciale.These cmdlets use varying communication protocols and work on all Windows operating systems without any special configuration.

Ces applets de commande sont les suivantes :These cmdlets include:

En général, les cmdlets qui prennent en charge la communication à distance sans configuration particulière possèdent le paramètre ComputerName. En revanche, elles ne possèdent pas le paramètre Session.Typically, cmdlets that support remoting without special configuration have the ComputerName parameter and don't have the Session parameter. Pour trouver ces applets de commande dans votre session, tapez :To find these cmdlets in your session, type:

Get-Command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}

Communication à distance Windows PowerShellWindows PowerShell Remoting

La communication à distance Windows PowerShell, qui utilise le protocole WS-Management, vous permet d'exécuter n'importe quelle commande Windows PowerShell sur un ou plusieurs ordinateurs distants.Using the WS-Management protocol, Windows PowerShell remoting lets you run any Windows PowerShell command on one or more remote computers. Vous pouvez établir des connexions persistantes, démarrer des sessions interactives et exécuter des scripts sur ordinateurs distants.You can establish persistent connections, start interactive sessions, and run scripts on remote computers.

Pour utiliser la communication à distance Windows PowerShell, l'ordinateur distant doit être configuré pour la gestion à distance.To use Windows PowerShell remoting, the remote computer must be configured for remote management. Pour obtenir plus d’informations, notamment des instructions, voir about_Remote_Requirements.For more information, including instructions, see About Remote Requirements.

Après avoir configuré la communication à distance Windows PowerShell, vous avez le choix entre plusieurs stratégies de communication à distance.Once you have configured Windows PowerShell remoting, many remoting strategies are available to you. Cet article en répertorie quelques-unes.This article lists just a few of them. Pour plus d’informations, consultez À propos de la communication à distance.For more information, see About Remote.

Démarrer une session interactiveStart an Interactive Session

Pour démarrer une session interactive avec un seul ordinateur distant, utilisez l’applet de commande Enter-PSSession.To start an interactive session with a single remote computer, use the Enter-PSSession cmdlet. Par exemple, pour démarrer une session interactive avec l'ordinateur distant Server01, tapez :For example, to start an interactive session with the Server01 remote computer, type:

Enter-PSSession Server01

L'invite de commandes affiche alors le nom de l'ordinateur distant.The command prompt changes to display the name of the remote computer. Toutes les commandes que vous tapez à l'invite sont exécutées sur l'ordinateur distant et les résultats sont affichés sur l'ordinateur local.Any commands that you type at the prompt run on the remote computer and the results are displayed on the local computer.

Pour terminer la session interactive, tapez :To end the interactive session, type:

Exit-PSSession

Pour plus d’informations sur les cmdlets Enter-PSSession et Exit-PSSession, consultez :For more information about the Enter-PSSession and Exit-PSSession cmdlets, see:

Exécuter une commande à distanceRun a Remote Command

Pour exécuter une commande sur un ou plusieurs ordinateurs, utilisez la cmdlet Invoke-Command.To run a command on one or more computers, use the Invoke-Command cmdlet. Par exemple, pour exécuter une commande Get-UICulture sur les ordinateurs distants Serveur01 et Serveur02, tapez :For example, to run a Get-UICulture command on the Server01 and Server02 remote computers, type:

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}

La sortie est retournée à votre ordinateur.The output is returned to your computer.

LCID    Name     DisplayName               PSComputerName
----    ----     -----------               --------------
1033    en-US    English (United States)   server01.corp.fabrikam.com
1033    en-US    English (United States)   server02.corp.fabrikam.com

Exécuter un scriptRun a Script

Pour exécuter un script sur un ou plusieurs ordinateurs distants, utilisez le paramètre FilePath de la cmdlet Invoke-Command.To run a script on one or many remote computers, use the FilePath parameter of the Invoke-Command cmdlet. Le script doit être accessible à votre ordinateur local ou se trouver sur celui-ci.The script must be on or accessible to your local computer. Les résultats sont retournés à votre ordinateur local.The results are returned to your local computer.

Par exemple, la commande suivante exécute le script DiskCollect.ps1 sur les ordinateurs distants Server01 et Server02.For example, the following command runs the DiskCollect.ps1 script on the remote computers, Server01 and Server02.

Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1

Établir une connexion persistanteEstablish a Persistent Connection

Utilisez la cmdlet New-PSSession pour créer une session persistante sur un ordinateur distant.Use the New-PSSession cmdlet to create a persistent session on a remote computer. L’exemple suivant crée des sessions distantes sur Server01 et Server02.The following example creates remote sessions on Server01 and Server02. Les objets de session sont stockés dans la variable $s.The session objects are stored in the $s variable.

$s = New-PSSession -ComputerName Server01, Server02

Une fois les sessions établies, vous pouvez exécuter n'importe quelle commande dans celles-ci.Now that the sessions are established, you can run any command in them. Les sessions étant persistantes, vous pouvez collecter des données à partir d’une seule commande et les utiliser dans une autre commande.And because the sessions are persistent, you can collect data from one command and use it in another command.

Par exemple, la commande suivante exécute une commande Get-Hotfix dans les sessions dans la variable $s et enregistre les résultats dans la variable $h.For example, the following command runs a Get-HotFix command in the sessions in the $s variable and it saves the results in the $h variable. La variable $h est créée dans chacune des sessions dans $s, mais elle n'existe pas dans la session locale.The $h variable is created in each of the sessions in $s, but it doesn't exist in the local session.

Invoke-Command -Session $s {$h = Get-HotFix}

Vous pouvez désormais utiliser les données dans la variable $h avec d’autres commandes dans la même session.Now you can use the data in the $h variable with other commands in the same session. Les résultats sont affichés sur l'ordinateur local.The results are displayed on the local computer. Par exemple :For example:

Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NTAUTHORITY\SYSTEM"}}

Communication à distance avancéeAdvanced Remoting

Dans Windows PowerShell, la gestion à distance n'est qu'un début.Windows PowerShell remote management just begins here. Grâce aux applets de commande installées avec Windows PowerShell, vous pouvez établir et configurer des sessions à distance à partir des extrémités locales et distantes, créer des sessions personnalisées et restreintes, permettre aux utilisateurs d'importer à partir d'une session à distance des commandes qui s'exécutent de manière implicite sur la session à distance, configurer la sécurité d'une session à distance, etc.By using the cmdlets installed with Windows PowerShell, you can establish and configure remote sessions both from the local and remote ends, create customized and restricted sessions, allow users to import commands from a remote session that actually run implicitly on the remote session, configure the security of a remote session, and much more.

Windows PowerShell inclut un fournisseur WSMan.Windows PowerShell includes a WSMan provider. Le fournisseur crée un lecteur WSMAN: qui vous permet de parcourir une hiérarchie de paramètres de configuration sur l'ordinateur local et les ordinateurs distants.The provider creates a WSMAN: drive that lets you navigate through a hierarchy of configuration settings on the local computer and remote computers.

Pour plus d’informations sur le fournisseur WSMan, consultez Fournisseur WSMan et À propos des cmdlets WS-Management ou tapez Get-Help wsman dans la console Windows PowerShell.For more information about the WSMan provider, see WSMan Provider and About WS-Management Cmdlets, or in the Windows PowerShell console, type Get-Help wsman.

Pour plus d’informations, voir :For more information, see:

Pour obtenir de l’aide sur les erreurs de communication à distance, voir about_Remote_Troubleshooting.For help with remoting errors, see about_Remote_Troubleshooting.

Voir aussiSee Also