是否可以修改远程变量?我正在尝试做一些类似以下的事情:
$var1 = ""
$var2 = ""
Invoke-Command -ComputerName Server1 -ScriptBlock{
$using:var1 = "Hello World"
$using:var2 = "Goodbye World"
}
当我尝试这样做时,我得到错误:
The assignment expression is not valid. The input to an assignment operator must be an object that is able to accept assignments, such as a variable or a property.
显然,使用这种方法是行不通的,但有没有其他我可以采取的方法呢?我需要在远程和本地范围内使用和修改这些变量
2条答案
按热度按时间vatpfxk51#
所以你想做的事不会奏效。但这里有一个变通的办法。
将希望返回的数据放入哈希表中,然后捕获结果并对其进行枚举,然后将值放入变量中。
它会回来的
nuypyhwy2#
你试图做的事情从根本上说是行不通的:
$using:
引用在不同运行空间中执行的脚本块中调用者的作用域中的变量(如远程,通过Invoke-Command -ComputerName
,与您的情况一样):在手边的例子中,
$using:var1
实际上变成了脚本块中的""
(调用Invoke-Command
时,$var1
的值),并且像"" = "Hello world"
这样的东西不能工作。概念性帮助主题
about_Remote_Variables
(现在)提到(已添加强调):变量引用(如
$using:var
)从调用方的上下文扩展为变量$var
的值。您无法访问调用方的变量对象。有关背景信息,请参见this answer。
至于潜在解决方案:
让脚本阻塞*输出感兴趣的值**,然后赋给局部变量,如ArcSet's helpful answer所示。