Remoting $Using Variable Scope en PowerShell
Cuando trabaje con comandos remotos en PowerShell, a veces puede querer usar variables locales en una sesión remota. Pero si usa una variable local en los comandos remotos, devolverá un error porque la variable no se crea en la sesión remota.
De forma predeterminada, PowerShell espera que las variables de los comandos remotos se definan en la sesión remota en la que se ejecuta el comando. Using
es un modificador de alcance especial que le permite usar variables locales en comandos remotos.
El modificador de alcance Using
identifica las variables definidas en la sesión local como una variable local en el comando remoto. Se introduce en PowerShell 3.0.
Este tutorial te enseñará a usar variables locales en comandos remotos con Usar
en PowerShell.
Use el modificador de alcance Using
en PowerShell
La sintaxis del modificador de alcance Using
es:
$Using:VariableName
El modificador de alcance Using
se admite en los comandos ejecutados de forma remota, comenzando con Invoke-Command
utilizando los parámetros ComputerName
, HostName
, SSHConnection
o Session
.
El siguiente script muestra que la variable $test
se define en la computadora local y se usa en la sesión remota.
$test = "C:\New\complex"
Invoke-Command -ComputerName remotePC -ScriptBlock {
Get-ChildItem $Using:test
}
El primer comando almacena la ruta del directorio C:\New\complex
en la variable $test
en la computadora local. El segundo comando ejecuta el comando Get-ChildItem
con la variable local $test
en la computadora remota.
Como resultado, imprime los elementos presentes en el directorio C:\New\complex
en la computadora remota.
Producción :
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
También puede utilizar el modificador de ámbito Using
en una PSSession
.
En el siguiente ejemplo, se crean dos variables, $a
y $b
, en la sesión local y se utilizan en la sesión remota. La variable $result
se define en la sesión remota, que almacena la multiplicación de valores en $a
y $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
}
Producción :
The result is 30
Esperamos que este tutorial lo haya ayudado a comprender cómo usar el modificador de alcance Using
para variables locales en comandos remotos. Para obtener más información, lea about_Remote_Variables
.