Powershell - 运行外部 powershell 脚本并捕获输出 - 无法传递参数

5 powershell ampersand

我在从另一个 powershell 脚本中运行 powershell 脚本、传递参数和捕获输出时遇到问题。我曾尝试使用与号运算符,通过调用它powershell.exe -Command但似乎没有任何效果。

似乎有效的是使用固定参数和存储在这样的变量中的值C:\path\to\script.ps1 -arg1 $value
如果没有其他方法,这可能会提供一个解决方案,但我想运行与此类似的命令& $pathToScript $params 2>&12>&1用于捕获错误输出以及标准)。


有时构造只打印脚本的路径,
有时它会说Cannot run file in the middle of pipeline
有时它会抱怨它找不到提到的脚本文件(我有时在我的路径中有空格,但我认为引用它就足够了:引用是这样完成的$path = "`"C:\path\with space\to\script.ps1`"")。

这是我想在以下情况下使用的简化函数:

Function captureScriptOutput
{
    #the function receives the script path and parameters
    param($path, $params)
    
    #this works if no params are passed, but I need params!
    $output = & $path $params 2>&1 | Out-String
}
Run Code Online (Sandbox Code Playgroud)

wal*_*umi 0

尝试使用调用表达式,但您需要测试需要多少引用

Invoke-expression "$path $param"
Run Code Online (Sandbox Code Playgroud)