Partager via


À propos de Remote

DESCRIPTION COURTE

Décrit comment exécuter des commandes à distance dans PowerShell.

DESCRIPTION DÉTAILLÉE

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

Cette rubrique fournit une série d’exemples pour vous montrer comment exécuter différents types de commandes à distance. Après avoir essayé ces commandes de base, lisez les rubriques d’aide qui décrivent chaque applet de commande utilisée dans ces commandes. Les rubriques fournissent les détails et expliquent comment modifier les commandes pour répondre à vos besoins.

Remarque : Pour utiliser la communication à distance PowerShell, les ordinateurs locaux et distants doivent être configurés pour la communication à distance. Pour plus d'informations, consultez about_Remote_Requirements.

GUIDE PRATIQUE POUR DÉMARRER UNE SESSION INTERACTIVE (ENTER-PSSESSION)

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

Lorsque la session démarre, les commandes que vous tapez s’exécutent sur l’ordinateur distant, comme si vous les tapiez directement sur l’ordinateur distant. Vous ne pouvez vous connecter qu’à un seul ordinateur dans chaque session interactive.

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

Enter-PSSession Server01

L’invite de commandes change pour indiquer que vous êtes connecté à l’ordinateur Server01.

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 Enter-PSSession.

COMMENT UTILISER DES APPLETS DE COMMANDE QUI ONT UN PARAMÈTRE COMPUTERNAME POUR OBTENIR DES DONNÉES DISTANTES

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 respecter 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 commande Invoke-Command.

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

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

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

Le paramètre ComputerName est conçu pour une situation dans laquelle vous exécutez une seule commande ou plusieurs commandes non liées sur un ou plusieurs ordinateurs. Pour établir une connexion permanente à un ordinateur distant, utilisez le paramètre Session.

COMMENT CRÉER UNE CONNEXION PERMANENTE (PSSESSION)

Lorsque vous utilisez le paramètre ComputerName de l’applet de commande Invoke-Command, Windows PowerShell établit une connexion uniquement pour la commande . Ensuite, il ferme la connexion quand la commande est terminée. Toutes les variables ou fonctions définies dans la commande sont perdues.

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

$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 à distance qui partagent des données, telles que des fonctions, des alias et les valeurs de variables. Pour exécuter des commandes dans une session PSSession, utilisez le paramètre Session de l’applet de commande Invoke-Command.

Par exemple, la commande suivante utilise l’applet de commande Invoke-Command pour exécuter une commande Get-Process dans les sessions PSSession sur les ordinateurs Server01 et Server02. La commande enregistre les processus dans une variable $p 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 variable $p. 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 commande Get-Culture 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 commande Get-Culture 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.

Par exemple, la commande suivante exécute le script Sample.ps1 sur les ordinateurs S1 et S2 :

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

Les résultats du script sont retournés à l’ordinateur local. Vous n’avez pas besoin de copier des fichiers.

COMMENT ARRÊTER UNE COMMANDE DISTANTE

Pour interrompre une commande, appuyez sur Ctrl+C. La demande d’interruption est passée à 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, les configurations spéciales, les problèmes de sécurité et d’autres questions fréquemment posées, consultez about_Remote_FAQ.

  • 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.

MOTS-CLÉS

about_Remoting

VOIR AUSSI

about_PSSessions

about_Remote_Disconnected_Sessions

about_Remote_Requirements

about_Remote_FAQ

about_Remote_TroubleShooting

about_Remote_Variables

Enter-PSSession

Invoke-Command

New-PSSession