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 Windows PowerShell.You can run commands on one or hundreds of computers with a single Windows 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.

Communication à distance sans configurationRemoting 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. Elles utilisent diverses technologies de communication et bon nombre d'entre elles fonctionnent sur tous les systèmes d'exploitation Windows pris en charge par Windows PowerShell, et ce sans configuration particulière.They use a variety of communication technologies and many work on all Windows operating systems that Windows PowerShell supports without any special configuration.

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

En général, les applets de commande 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 do not 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.Windows PowerShell remoting, which uses the WS-Management protocol, lets you run any Windows PowerShell command on one or many remote computers. Vous pouvez ainsi établir des connexions persistantes, démarrer des sessions interactives 1:1 et exécuter des scripts sur plusieurs ordinateurs.It lets you establish persistent connections, start 1:1 interactive sessions, and run scripts on multiple 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.After you have configured Windows PowerShell remoting, many remoting strategies are available to you. Le reste de ce document répertorie quelques-unes d'entre elles.The remainder of this document lists just a few of them. Pour plus d’informations, voir À propos de la connexion à distance et FAQ de la connexion à distance.For more information, see About Remote and About Remote FAQ.

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 auquel vous êtes connecté.The command prompt changes to display the name of the computer to which you are connected. À partir de là, 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.From then on, 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 applets de commande Enter-PSSession et Exit-PSSession, voir Enter-PSSession et Exit-PSSession.For more information about the Enter-PSSession and Exit-PSSession cmdlets, see Enter-PSSession and Exit-PSSession.

Exécuter une commande à distanceRun a Remote Command

Pour exécuter une commande sur un ou plusieurs ordinateurs distants, utilisez l’applet de commande Invoke-Command.To run any command on one or many remote 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

Pour plus d’informations sur l’applet de commande Invoke-Command, voir Invoke-Command.For more information about the Invoke-Command cmdlet, see Invoke-Command.

Exécuter un scriptRun a Script

Pour exécuter un script sur un ou plusieurs ordinateurs distants, utilisez le paramètre FilePath de l'applet de commande 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 Server01 and Server02 remote computers.

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

Pour plus d’informations sur l’applet de commande Invoke-Command, voir Invoke-Command.For more information about the Invoke-Command cmdlet, see Invoke-Command.

Établir une connexion persistanteEstablish a Persistent Connection

Pour exécuter une série de commandes associées qui partagent des données, créez une session sur l'ordinateur distant, puis utilisez l'applet de commande Invoke-Command pour exécuter des commandes dans la session créée.To run a series of related commands that share data, create a session on the remote computer and then use the Invoke-Command cmdlet to run commands in the session that you create. Pour créer une session à distance, utilisez l'applet de commande New-PSSession.To create a remote session, use the New-PSSession cmdlet.

Par exemple, la commande suivante crée une session à distance sur l'ordinateur Server01 et une autre session à distance sur l'ordinateur Server02.For example, the following command creates a remote session on the Server01 computer and another remote session on the Server02 computer. Elle enregistre les objets de session dans la variable $s.It saves the session objects 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 en une seule commande et les utiliser dans une commande ultérieure.And because the sessions are persistent, you can collect data in one command and use it in a subsequent 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 does not exist in the local session.

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

Vous pouvez désormais utiliser les données dans la variable $h dans des commandes ultérieures, comme celle qui suit.Now you can use the data in the $h variable in subsequent commands, such as the following one. Les résultats sont affichés sur l'ordinateur local.The results are displayed on the local computer.

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.

Pour faciliter la configuration à distance, Windows PowerShell comprend un fournisseur WSMan.To facilitate remote configuration, Windows PowerShell includes a WSMan provider. Le lecteur WSMAN: créé par le fournisseur vous permet de parcourir une hiérarchie de paramètres de configuration sur l'ordinateur local et les ordinateurs distants.The WSMAN: drive that the provider creates lets you navigate through a hierarchy of configuration settings on the local computer and remote computers. Pour plus d’informations sur le fournisseur WSMan, voir Fournisseur WSMan et À propos des applets de commande WSMan 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