Usando o Escopo de Variável Remota no PowerShell

Ao trabalhar com comandos remotos no PowerShell, às vezes você pode querer usar variáveis locais em uma sessão remota. Mas se você usar uma variável local em comandos remotos, isso retornará um erro porque a variável não é criada na sessão remota.
Por padrão, o PowerShell espera que as variáveis em comandos remotos sejam definidas na sessão remota na qual o comando é executado. Using
é um modificador de escopo especial que permite usar variáveis locais em comandos remotos.
O modificador de escopo Using
identifica variáveis definidas na sessão local como uma variável local no comando remoto. Foi introduzido no PowerShell 3.0.
Este tutorial ensinará você a usar variáveis locais em comandos remotos com Using
no PowerShell.
Use Using
Scope Modifier no PowerShell
A sintaxe para o modificador de escopo Using
é:
$Using:VariableName
O modificador de escopo Using
é suportado em comandos executados remotamente, a partir do Invoke-Command
usando os parâmetros ComputerName
, HostName
, SSHConnection
ou Session
.
O seguinte script mostra que a variável $test
é definida no computador local e usada na sessão remota.
$test = "C:\New\complex"
Invoke-Command -ComputerName remotePC -ScriptBlock {
Get-ChildItem $Using:test
}
O primeiro comando armazena o caminho do diretório C:\New\complex
na variável $test
no computador local. O segundo comando executa o comando Get-ChildItem
com a variável local $test
no computador remoto.
Como resultado, imprime os itens presentes no diretório C:\New\complex
no computador remoto.
Saída:
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
Você também pode usar o modificador de escopo Using
em uma PSSession
.
No seguinte exemplo, duas variáveis, $a
e $b
, são criadas na sessão local e usadas na sessão remota. A variável $result
é definida na sessão remota, que armazena a multiplicação dos valores em $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
}
Saída:
The result is 30
Esperamos que este tutorial tenha ajudado você a entender como usar o modificador de escopo Using
para variáveis locais em comandos remotos. Para mais informações, leia about_Remote_Variables
.