我会尽量使这个例子变得简单。
$myValues = {
$value1 = "hello"
$value2 = "world"
}
Invoke-Command $myValues
$value1
执行后如何访问$value2
和Invoke-Command
?
编辑:我想解决的问题是我必须在整个脚本中多次初始化$myValues
内的变量。所以我想我会在顶部定义脚本块ONCE,然后只要我需要重新初始化变量就在Invoke-Command
上调用$myVariables
。
答案 0 :(得分:4)
如果您点源脚本块,它将在您当前的范围内运行,之后变量将可用。
$myValues = {
$value1 = "hello"
$value2 ="world"
}
. $myValues
答案 1 :(得分:1)
返回scriptblock中的两个值,并为invoke-command分配一个变量。然后,您可以从返回的数组中访问变量:
$myValues = {
$value1 = "hello"
$value2 ="world"
$value1
$value2
}
$remoteOutput = Invoke-Command $myValues
$remoteOutput[0]
$remoteOutput[1]
在我的计算机上测试的输出将是:
hello
world
如果这解决了您遇到的问题,请告诉我。如果不是,我们可以为不同的解决方案而努力!
答案 2 :(得分:0)
频繁重新初始化变量的要求通常表明设计不佳。话虽如此,如果由于某种原因你仍然必须这样做,我会使用一个函数来(重新)初始化global
或script
范围内的变量集:
function Initialize-VariableSet {
$script:value1 = 'hello'
$script:value2 = 'world'
}
演示:
PS C:\> Initialize-VariableSet PS C:\> $value1 hello PS C:\> $value1 = 'foobar' PS C:\> $value1 foobar PS C:\> Initialize-VariableSet PS C:\> $value1 hello