我希望使用 Invoke-Command 将环境变量从调用机器传递到执行 Invoke-Command 的服务器。
我希望它能工作:
Invoke-Command -ComputerName MyServer-ScriptBlock {
$env:VAR=$using:env:USERNAME
Write-Host $env:VAR
}
但是这个命令的输出是空的。如果我不使用 $using 范围修饰符,而只是直接分配变量,我会得到预期的输出(“VAR”)。
Invoke-Command -ComputerName MyServer -ScriptBlock {
$env:VAR="VAR"
Write-Host $env:VAR
}
那么,我可以将 $using 与环境变量一起使用吗?如果没有,是否有一种简单的方法可以将环境变量传递到运行 Invoke-Command 的远程计算机?
最佳答案
一种选择是在调用之前将环境变量分配给标准变量:
$username = $env:USERNAME
Invoke-Command -ComputerName MyServer-ScriptBlock {
$env:VAR=$using:userName
Write-Host $env:VAR
}
请注意,在您的 session 结束后,像这样分配环境变量 ($env:VAR=<value>
) 将不会持续存在。使用 Environment.SetEnvironmentVariable()方法。
关于Powershell Invoke-Command 传递环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49861301/