Remoting $Using de la portée des variables dans PowerShell

Rohan Timalsina 7 juin 2022
Remoting $Using de la portée des variables dans PowerShell

Lorsque vous travaillez avec des commandes distantes dans PowerShell, vous souhaiterez parfois utiliser des variables locales dans une session distante. Mais si vous utilisez une variable locale dans des commandes distantes, une erreur sera renvoyée car la variable n’est pas créée dans la session distante.

Par défaut, PowerShell s’attend à ce que les variables des commandes distantes soient définies dans la session distante dans laquelle la commande s’exécute. Using est un modificateur de portée spécial qui vous permet d’utiliser des variables locales dans des commandes distantes.

Le modificateur de portée Using identifie les variables définies dans la session locale comme une variable locale dans la commande distante. Il est introduit dans PowerShell 3.0.

Ce tutoriel va vous apprendre à utiliser des variables locales dans les commandes distantes avec Using dans PowerShell.

Utiliser le modificateur de portée Using dans PowerShell

La syntaxe du modificateur de portée Using est :

$Using:VariableName

Le modificateur de portée Using est pris en charge dans les commandes exécutées à distance, en commençant par Invoke-Command en utilisant les paramètres ComputerName, HostName, SSHConnection ou Session.

Le script suivant montre que la variable $test est définie dans l’ordinateur local et utilisée dans la session distante.

$test = "C:\New\complex"
Invoke-Command -ComputerName remotePC -ScriptBlock {
  Get-ChildItem $Using:test
}

La première commande stocke le chemin du répertoire C:\New\complex dans la variable $test de l’ordinateur local. La deuxième commande exécute la commande Get-ChildItem avec la variable locale $test dans l’ordinateur distant.

De ce fait, il imprime les éléments présents dans le répertoire C:\New\complex du poste distant.

Production:

Directory: C:\New\complex
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        20-12-2021     19:31         112125 architecture of aqps.png
-a----        20-12-2021     21:32          33148 formula.png
-a----        20-12-2021     21:30          55621 modules.png
-a----        20-12-2021     16:35         190485 output paper.png

Vous pouvez également utiliser le modificateur de portée Using dans une PSSession.

Dans l’exemple suivant, deux variables, $a et $b, sont créées dans la session locale et utilisées dans la session distante. La variable $result est définie dans la session distante, qui stocke la multiplication des valeurs dans $a et $b.

$ps = New-PSSession -ComputerName remotePC
$a=5
$b=6
Invoke-Command -Session $ps -ScriptBlock {
$result = $Using:a*$Using:b
Write-Host The result is $result
}

Production:

The result is 30

Nous espérons que ce tutoriel vous a aidé à comprendre comment utiliser le modificateur de portée Using pour les variables locales dans les commandes distantes. Pour plus d’informations, lisez about_Remote_Variables.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website