重定向cmdlet警告/错误输出?

时间:2013-12-13 04:20:21

标签: powershell

这必须是一个非常简单的解决方案,但我不能为我的生活找出如何将错误/警告重定向到标准输出。

现在,我通过将其分配给变量来捕获输出的内容,而不必担心格式化等,例如:

$buffer += Whatever-Cmdlet

但我想做的是将任何错误消息捕获到该变量中。喜欢做2>& 1。

有没有办法让这项工作?我试过了:

$buffer += Whatever-Cmdlet 2>&1 

没有成功。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

未经彻底测试,但

$buffer += Whatever-Cmdlet -WarningVariable +buffer -ErrorVariable +buffer

如果你有v3 / 4:

$PSDefaultParameterValues=@{"*:WarningVariable"="+buffer";"*:ErrorVariable"="+buffer";}

在设置之后,应该为您运行的所有cmdlet执行此操作。

答案 1 :(得分:0)

实际上,只要你输出输出结果就是结果:

$buffer += Whatever-Cmdlet 2>&1 | Out-String

似乎有效。谢谢!

答案 2 :(得分:0)

这取决于您运行的PowerShell版本。在PowerShell v2中,警告会写入主机,因此无法在变量中捕获。在PowerShell v3中,警告被写入单独的输出流,因此您必须重定向警告流以及错误流以捕获错误和警告:

$buffer += Whatever-Cmdlet 2>&1 3>&1 | Out-String

有关详细信息,请参阅Get-Help about_Redirection