Partager via


Exécution de commandes à distance

Vous pouvez exécuter des commandes sur un ordinateur ou plusieurs centaines au moyen d'une seule commande PowerShell. Windows PowerShell prend en charge le calcul à distance à l’aide de diverses technologies, notamment WMI, RPC et WS-Management.

PowerShell prend en charge WMI, WS-Management et la communication à distance SSH. Dans PowerShell 7 et versions ultérieures, RPC est pris en charge uniquement sur Windows.

Pour plus d’informations sur la communication à distance dans PowerShell, consultez les articles suivants :

Communication à distance Windows PowerShell sans configuration

De nombreuses applets de commande Windows PowerShell ont le paramètre ComputerName qui vous permet de collecter des données et de modifier les paramètres sur un ou plusieurs ordinateurs distants. Ces cmdlets utilisent différents protocoles de communication et fonctionnent sur tous les systèmes d’exploitation Windows sans configuration spéciale.

Ces applets de commande sont les suivantes :

En règle générale, les applets de commande qui prennent en charge la communication à distance sans configuration spéciale ont le paramètre ComputerName et n’ont pas le 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"
}

Accès distant Windows PowerShell

Avec le protocole WS-Management, Windows PowerShell en mode distant vous permet d’exécuter n’importe quelle commande Windows PowerShell sur un ou plusieurs ordinateurs distants. Vous pouvez établir des connexions persistantes, démarrer des sessions interactives et exécuter des scripts sur des ordinateurs distants.

Pour utiliser la fonctionnalité de gestion à distance de Windows PowerShell, l’ordinateur distant doit être configuré pour la gestion à distance. Pour obtenir plus d’informations, notamment des instructions, consultez about_Remote_Requirements.

Une fois que vous avez configuré Windows PowerShell à distance, de nombreuses stratégies de gestion à distance vous sont disponibles. Cet article répertorie quelques-uns d’entre eux. Pour plus d’informations, consultez À propos de Remote.

Démarrer une session interactive

Pour démarrer une session interactive avec un seul ordinateur distant, utilisez l’applet de commande Enter-PSSession . Par exemple, pour démarrer une session interactive avec l’ordinateur distant Server01, tapez :

Enter-PSSession Server01

L’invite de commandes change pour afficher le nom de l’ordinateur distant. Toutes les commandes que vous tapez à l’invite s’exécutent sur l’ordinateur distant et les résultats s’affichent sur l’ordinateur local.

Pour mettre fin à la session interactive, tapez :

Exit-PSSession

Pour plus d’informations sur les Enter-PSSession et Exit-PSSession applets de commande, consultez :

Exécuter une commande distante

Pour exécuter une commande sur un ou plusieurs ordinateurs, utilisez l’applet de commande Invoke-Command . Par exemple, pour exécuter une commande Get-UICulture sur les ordinateurs distants Server01 et Server02, tapez :

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

La sortie est retournée à votre ordinateur.

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 script

Pour exécuter un script sur un ou plusieurs ordinateurs distants, utilisez le paramètre FilePath de l’applet Invoke-Command de commande. Le script doit être activé ou accessible à votre ordinateur local. Les résultats sont retournés à votre ordinateur local.

Par exemple, la commande suivante exécute le DiskCollect.ps1 script sur les ordinateurs distants, Server01 et Server02.

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

Établir une connexion persistante

Utilisez l’applet New-PSSession de commande pour créer une session persistante sur un ordinateur distant. L’exemple suivant crée des sessions distantes sur Server01 et Server02. Les objets de session sont stockés dans la $s variable.

$s = New-PSSession -ComputerName Server01, Server02

Une fois les sessions établies, vous pouvez exécuter n'importe quelle commande dans celles-ci. Les sessions étant persistantes, vous pouvez collecter des données à partir d’une seule commande et les utiliser dans une autre commande.

Par exemple, la commande suivante exécute une Get-HotFix commande dans les sessions de la $s variable et enregistre les résultats dans la $h variable. La variable $h est créée dans chacune des sessions dans $s, mais elle n’existe pas dans la session locale.

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

Vous pouvez maintenant utiliser les données de la $h variable avec d’autres commandes dans la même session. Les résultats sont affichés sur l’ordinateur local. Par exemple:

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

Communication à distance avancée

PowerShell inclut des applets de commande qui vous permettent de :

  • Configurer et créer des sessions distantes depuis les extrémités locales ou distantes
  • Créer des sessions personnalisées et restreintes
  • Importer des commandes à partir d’une session distante qui s’exécutent implicitement sur la session à distance
  • Configurer la sécurité d’une session à distance

PowerShell sur Windows inclut un fournisseur WSMan. Le fournisseur crée un WSMan: lecteur qui vous permet de parcourir une hiérarchie de paramètres de configuration sur l’ordinateur local et les ordinateurs distants.

Pour plus d’informations sur le fournisseur WSMan, consultez Fournisseur WSMan et À propos des applets de commande WS-Management, ou dans la console Windows PowerShell, tapez Get-Help WSMan.

Pour plus d’informations, consultez :

Pour obtenir de l’aide sur les erreurs d'accès à distance, consultez about_Remote_Troubleshooting.

Voir aussi