如何仅在PowerShell中的变量中捕获错误输出

Kla*_*urn 19 error-handling powershell stream

我想将PowerShell命令的stderr输出存储在变量中.我不想将它存储在一个文件中,我不希望包含标准输出,只是错误输出.

这会重定向到名为的文件error.txt:

&$ command $ params 2> error.txt

这会将stderr和stdout重定向到$ output变量:

$ output =&$ command $ params 2>&1

但我想将错误输出存储在一个变量中(与上面的error.txt文件的内容相同),而不是将任何内容写入文件.我怎么做?

arc*_*444 23

您可以以稍微不同的方式调用该命令并-ErrorVariable在PowerShell中使用该参数:

Invoke-Expression "$command $params" -ErrorVariable badoutput
Run Code Online (Sandbox Code Playgroud)

$badoutput 现在将包含错误字符串的内容.


Jim*_*Jim 20

这是Simon Wahlin使用子表达式的更简单的解决方案

$输出=&$命令$参数2>&1

将会:

$errOutput = $( $output = & $command $params ) 2>&1
Run Code Online (Sandbox Code Playgroud)