Powershell:如何传递变量值,该值在已执行的命令变量中赋值

时间:2020-09-03 13:38:47

标签: powershell

解释我的需求有些棘手,但是请看下面的简化代码示例以了解它,在非常特殊的情况下,需要这种方法以64位模式执行脚本:

$x=0
$command = {
 $a=1
 $b=2
 $x=$a

 $r=$a+$b
}

$Result = C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -Command $command
write-host($x)

此$ command执行的最终结果为3,但我还需要传递$ x值,即$ command中的值,在当前示例中,最后是$ x = 0。

我的问题是,是否有可能传递在命令变量中赋值的变量值?在上面的示例中,是否可以传递$ a和$ b变量值?

2 个答案:

答案 0 :(得分:0)

我不确定为什么要在PowerShell中调用PowerShell,但是:

PS> $command = {
$a=1
$b=2

Return $a+$b
}

$x = & $command

$x

3

您可以使用调用(&)运算符执行命令变量并获得结果。

HTH

答案 1 :(得分:0)

不确定X = 0和写主机与在另一个进程中运行命令并从中检索结果有关。您的命令脚本块不会在当前状态下创建任何输出,因此不会捕获任何内容到$Result

似乎您打算用$a$b进行计算,但是然后说您想将这些值传递出去。您是否要在内部进行计算,然后仅输出其原始数据?您可以简单地输出一个哈希表或pscustomobject,然后像这样使用输出。

$command = {
    $a=1
    $b=2
    $x=$a

    $r = $a + $b
    @{A=$a;B=$b}
}
$Result = C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -Command $command

$Result

Name                           Value                                                                                                                                                          
----                           -----                                                                                                                                                          
A                              1                                                                                                                                                              
B                              2    

$result.a

1
相关问题