基本上就是我想要做的是:调用多个PowerShell命令在同一范围
步骤1)调用whatever.ps1(或脚本块),剧本是这样的: $你好=“世界“
步骤2)调用获取变量-name你好
步骤3)检索的输出获取变量
我无法弄清楚如何做到这一点干净,因为我每次调用创建一个不同范围的脚本块。
基本上就是我想要做的是:调用多个PowerShell命令在同一范围
步骤1)调用whatever.ps1(或脚本块),剧本是这样的: $你好=“世界“
步骤2)调用获取变量-name你好
步骤3)检索的输出获取变量
我无法弄清楚如何做到这一点干净,因为我每次调用创建一个不同范围的脚本块。
您有几个选项。最简单的方法是更改脚本,如果可以的话:
$global:hello = "world"
但是使用全局变量通常是不好的做法。所以另一种方法是让脚本输出“Hello”,然后捕获输出的管道调用。只要改变你最初的脚本是:
"world"
然后调用它,并抓住pipeline.Invoke的输出()和抓斗的第一个对象。
您还可以更改调用脚本的方式。将字符串传递给CreatePipeline,如下所示:
$hello = foo.ps1
然后检索变量$ hello的内容。
如果你仍然想要一个全局的(其他答案涵盖了这个),你不需要使用主机应用程序中的Get-Variable
。
创建一个运行空间并执行该脚本。
然后,您可以从运行空间访问变量:
value = myRunspace.SessionStateProxy.GetVariable("name");
的限制是目前做远程运行空间不myRunspace.SessionStateProxy.GetVariable工作,它抛出NewNotImplemented – ROAR 2010-02-25 08:13:56