Usando o Escopo de Variável Remota no PowerShell

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.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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