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.
-- 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.
-- Utilisez les paramètres définis par le mot clé param dans la commande.
-- 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