基本上我想做的是:
第1步)调用whatever.ps1(或脚本 block ),脚本类似于: $hello =“世界”
第 2 步)调用 Get-Variable -name hello
第 3 步)检索 Get-Variable 的输出
我不知道如何干净地做到这一点,因为每次我调用脚本 block 时都会创建不同的作用域。
最佳答案
您有几个选择。如果可以的话,最简单的方法是更改脚本:
$global:hello = "world"
但是,使用全局变量通常是一种不好的做法。因此,另一种方法是让脚本输出“Hello”,然后捕获管道调用的输出。只需将您的初始脚本更改为:
"world"
然后调用它并获取 pipeline.Invoke() 的输出并获取第一个对象。
您还可以更改调用脚本的方式。将字符串传递给 CreatePipeline,如下所示:
$hello = foo.ps1
然后检索变量 $hello 的内容。
关于powershell - 在同一范围内从 C# 调用多个 powershell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/970863/