Partager via


about_Remote

Description courte

Décrit comment exécuter des commandes distantes dans PowerShell.

Description longue

Vous pouvez exécuter des commandes distantes sur un ou plusieurs ordinateurs distants à l’aide d’une connexion temporaire ou persistante. Vous pouvez également démarrer une session interactive avec un seul ordinateur distant.

Remarque

Pour utiliser la communication à distance PowerShell, vous devez configurer les ordinateurs locaux et distants pour la communication à distance. Pour plus d’informations, consultez about_Remote_Requirements.

Guide pratique pour démarrer une session interactive

Le moyen le plus simple d’exécuter des commandes distantes consiste à démarrer une session interactive avec un ordinateur distant.

Au démarrage de la session, les commandes que vous tapez s’exécutent sur l’ordinateur distant, comme si vous les avez tapées directement sur l’ordinateur distant. Vous ne pouvez vous connecter qu’à un seul ordinateur de chaque session interactive.

Pour démarrer une session interactive, utilisez l’applet de Enter-PSSession commande. La commande suivante démarre une session interactive avec l’ordinateur Server01 :

Enter-PSSession Server01

PowerShell modifie l’invite de commandes pour inclure le nom de l’ordinateur distant.

Server01\PS>

À présent, vous pouvez taper des commandes sur l’ordinateur Server01.

Pour terminer la session interactive, tapez :

Exit-PSSession

Pour plus d’informations, consultez Entrée-PSSession.

Comment utiliser des applets de commande qui ont un paramètre ComputerName

Plusieurs applets de commande ont un paramètre ComputerName qui vous permet d’obtenir des objets à partir d’ordinateurs distants.

Étant donné que ces applets de commande n’utilisent pas la communication à distance PowerShell basée sur WS Management, vous pouvez utiliser le paramètre ComputerName de ces applets de commande sur n’importe quel ordinateur exécutant PowerShell. Les ordinateurs n’ont pas besoin d’être configurés pour la communication à distance PowerShell, et les ordinateurs n’ont pas besoin de répondre à la configuration système requise pour la communication à distance.

Les applets de commande suivantes ont un paramètre ComputerName :

Clear-EventLog    Limit-EventLog
Get-Counter       New-EventLog
Get-EventLog      Remove-EventLog
Get-HotFix        Restart-Computer
Get-Process       Show-EventLog
Get-Service       Stop-Computer
Get-WinEvent      Test-Connection
Get-WmiObject     Write-EventLog

Par exemple, la commande suivante obtient les services sur l’ordinateur distant Server01 :

Get-Service -ComputerName Server01

En règle générale, les applets de commande qui prennent en charge la communication à distance sans configuration spéciale ont un paramètre ComputerName et n’ont pas de paramètre session . Pour trouver ces applets de commande dans votre session, tapez :

Get-Command | Where-Object {
  $_.Parameters.Keys -contains 'ComputerName' -and
  $_.Parameters.Keys -notcontains 'Session'
}

Comment exécuter une commande distante

Pour exécuter d’autres commandes sur des ordinateurs distants, utilisez l’applet de Invoke-Command commande.

Pour exécuter une seule commande ou quelques commandes non liées, utilisez le paramètre ComputerName pour Invoke-Command spécifier les ordinateurs distants. Utilisez le paramètre ScriptBlock pour spécifier la commande.

Par exemple, la commande suivante exécute une Get-Culture commande sur l’ordinateur Server01.

Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}

Comment créer une connexion persistante

Lorsque vous utilisez le paramètre ComputerName de l’applet Invoke-Command de commande, PowerShell établit une connexion temporaire à l’ordinateur distant. Elle ferme la connexion une fois la commande terminée. Toutes les variables ou fonctions définies dans cette session temporaire sont perdues.

Pour créer une connexion persistante à un ordinateur distant, utilisez l’applet de New-PSSession commande. Par exemple, la commande suivante crée des sessions PSSession sur les ordinateurs Server01 et Server02, puis enregistre les sessions PSSession dans la $s variable.

$s = New-PSSession -ComputerName Server01, Server02

Comment exécuter des commandes dans une session PSSession

Avec une session PSSession, vous pouvez exécuter une série de commandes distantes qui partagent des données, telles que des fonctions, des alias et les valeurs des variables. Pour exécuter des commandes dans une session PSSession, utilisez le paramètre Session de l’applet Invoke-Command de commande.

Par exemple, la commande suivante utilise l’applet Invoke-Command de commande pour exécuter une Get-Process commande dans les sessions PSSession sur les ordinateurs Server01 et Server02. La commande enregistre les processus dans une $p variable dans chaque session PSSession.

Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}

Étant donné que psSession utilise une connexion persistante, vous pouvez exécuter une autre commande dans la même session PSSession qui utilise la $p variable. La commande suivante compte le nombre de processus enregistrés dans $p.

Invoke-Command -Session $s -ScriptBlock {$p.count}

Comment exécuter une commande distante sur plusieurs ordinateurs

Pour exécuter une commande distante sur plusieurs ordinateurs, tapez tous les noms d’ordinateurs dans la valeur du paramètre ComputerName de Invoke-Command. Séparez les noms par des virgules.

Par exemple, la commande suivante exécute une Get-Culture commande sur trois ordinateurs :

Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}

Vous pouvez également exécuter une commande dans plusieurs sessions PSSession. Les commandes suivantes créent des sessions PSSession sur les ordinateurs Server01, Server02 et Server03, puis exécutent une Get-Culture commande dans chacune des sessions PSSession.

$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}

Pour inclure la liste des ordinateurs locaux, tapez le nom de l’ordinateur local, tapez un point (.) ou tapez localhost.

Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}

Comment exécuter un script sur des ordinateurs distants

Pour exécuter un script local sur des ordinateurs distants, utilisez le paramètre FilePath de Invoke-Command. Vous n’avez pas besoin de copier de fichiers. Par exemple, la commande suivante exécute le Sample.ps1 script sur les ordinateurs S1 et S2 :

Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1

PowerShell retourne les résultats du script sur l’ordinateur local.

Comment arrêter une commande distante

Pour interrompre une commande, appuyez sur Ctrl+c. PowerShell transmet la demande d’interruption à l’ordinateur distant où elle met fin à la commande distante.

Pour plus d’informations

  • Pour plus d’informations sur la configuration système requise pour la communication à distance, consultez about_Remote_Requirements.

  • Pour obtenir de l’aide sur la mise en forme de la sortie distante, consultez about_Remote_Output.

  • Pour plus d’informations sur le fonctionnement de la communication à distance, la gestion des données distantes, des configurations spéciales, des problèmes de sécurité et d’autres questions fréquemment posées, consultez le FAQ sur la communication à distance PowerShell.

  • Pour obtenir de l’aide sur la résolution des erreurs de communication à distance, consultez about_Remote_Troubleshooting.

  • Pour plus d’informations sur les sessions PSSession et les connexions persistantes, consultez about_PSSessions.

  • Pour plus d’informations sur les travaux en arrière-plan PowerShell, consultez about_Jobs.

Voir aussi