about_Remote_Variables

Mis à jour: mai 2014

S'applique à: Windows PowerShell 4.0, Windows PowerShell 5.0

RUBRIQUE

about_Remote_Variables

DESCRIPTION COURTE

Explique comment utiliser des variables locales et distantes dans des commandes distantes.

DESCRIPTION DÉTAILLÉE

Vous pouvez utiliser des variables dans les commandes que vous exécutez sur des ordinateurs distants. Il vous suffit d'affecter une valeur à la variable, puis d'utiliser la variable à la place de la valeur.

Par défaut, les variables dans les commandes distantes sont supposées être définies dans la session dans laquelle ces commandes s'exécutent. Vous pouvez également utiliser des variables définies dans la session locale, à condition de les identifier comme des variables locales dans les commandes.

UTILISATION DE VARIABLES DISTANTES

Windows PowerShell® suppose que les variables utilisées dans les commandes distantes sont définies dans la session dans laquelle ces commandes s'exécutent.

Dans l'exemple suivant, la variable $ps est définie dans la session temporaire où s'exécute la commande Get-WinEvent.

        PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"; Get-WinEvent -LogName $ps}

De la même façon, quand la commande s'exécute dans une session persistante (session PowerShell), la variable distante doit être définie dans la même session PowerShell.

        PS C:\>$s = New-PSSession -ComputerName S1

        PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"}

        PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $ps}

UTILISATION DE VARIABLES LOCALES

Vous pouvez aussi utiliser des variables locales dans les commandes distantes. Dans ce cas, vous devez indiquer que la variable est définie dans la session locale.

À compter de Windows PowerShell 3.0, vous pouvez utiliser le modificateur d'étendue Using pour identifier une variable locale dans une commande distante.

La syntaxe du modificateur Using est la suivante :

       The syntax is:
           $Using:<VariableName>       

Dans l'exemple suivant, la variable $ps est créée dans la session locale, mais elle est utilisée dans la session dans laquelle la commande s'exécute. Le modificateur d'étendue Using identifie $ps comme une variable locale. Insérez le corps de la section ici.

        PS C:\>$ps = "Windows PowerShell"
        PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {Get-WinEvent -LogName $Using:ps}

Vous pouvez également utiliser le modificateur d'étendue Using dans les sessions PowerShell.

        PS C:\>$s = New-PSSession -ComputerName S1

        PS C:\>$ps = "Windows PowerShell"

        PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $Using:ps}

UTILISATION DE VARIABLES LOCALES DANS WINDOWS POWERSHELL 2.0

Pour utiliser une variable locale dans une commande distante, vous devez définir les paramètres de la commande distante et spécifier la variable locale comme valeur du paramètre ArgumentList dans l'applet de commande Invoke-Command.

Cette syntaxe de commande est acceptée dans Windows PowerShell 2.0 et versions ultérieures de Windows PowerShell.

  1. -- Utilisez le mot clé param pour définir les paramètres de la commande distante. Les noms de paramètre sont des espaces réservés qui n'ont pas besoin de correspondre au nom de la variable locale.

  2. -- Utilisez les paramètres définis par le mot clé param dans la commande.

  3. -- Utilisez le paramètre ArgumentList de l'applet de commande Invoke-Command pour définir la variable locale comme la valeur du paramètre.

Par exemple, les commandes suivantes définissent la variable $ps dans la session locale, puis l'utilisent dans une commande distante. La commande utilise $log comme nom du paramètre et la variable locale ($ps) comme valeur du paramètre.

      C:\PS>$ps = "Windows PowerShell"

      C:\PS>Invoke-Command -ComputerName S1 -ScriptBlock {param($log) Get-WinEvent -logname $log} -ArgumentList $ps

MOTS CLÉS

about_Using

VOIR AUSSI

about_Remote

about_PSSessions

about_Scopes

Enter-PSSession

Invoke-Command

New-PSSession