Remoting $Using Varieabilità di Scopo in PowerShell

Quando si lavora con comandi remoti in PowerShell, a volte potresti voler usare variabili locali in una sessione remota. Ma se usi una variabile locale in comandi remoti, restituirà un errore perché la variabile non è creata nella sessione remota.
Per impostazione predefinita, PowerShell si aspetta che le variabili nei comandi remoti siano definite nella sessione remota in cui il comando viene eseguito. Using
è un modificatore di scopo speciale che consente di utilizzare variabili locali in comandi remoti.
Il modificatore di scopo Using
identifica le variabili definite nella sessione locale come una variabile locale nel comando remoto. È stato introdotto in PowerShell 3.0.
Questo tutorial ti insegnerà a usare variabili locali in comandi remoti con Using
in PowerShell.
Usa il modificatore di scopo Using
in PowerShell
La sintassi per il modificatore di scopo Using
è:
$Using:VariableName
Il modificatore di scopo Using
è supportato nei comandi eseguiti da remoto, a partire da Invoke-Command
utilizzando i parametri ComputerName
, HostName
, SSHConnection
o Session
.
Lo script seguente mostra che la variabile $test
è definita nel computer locale e utilizzata nella sessione remota.
$test = "C:\New\complex"
Invoke-Command -ComputerName remotePC -ScriptBlock {
Get-ChildItem $Using:test
}
Il primo comando memorizza il percorso della directory C:\New\complex
nella variabile $test
nel computer locale. Il secondo comando esegue il comando Get-ChildItem
con la variabile locale $test
nel computer remoto.
Come risultato, stampa gli elementi presenti nella directory C:\New\complex
nel computer remoto.
Output:
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
Puoi anche usare il modificatore di scopo Using
in una PSSession
.
Nell’esempio seguente, due variabili, $a
e $b
, sono create nella sessione locale e utilizzate nella sessione remota. La variabile $result
è definita nella sessione remota, che memorizza il risultato della moltiplicazione dei valori in $a
e $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
}
Output:
The result is 30
Speriamo che questo tutorial ti abbia aiutato a comprendere come utilizzare il modificatore di scopo Using
per variabili locali in comandi remoti. Per ulteriori informazioni, leggi about_Remote_Variables
.