如何捕获从Powershell运行的控制台EXE的二进制标准输出?

问题描述:

是否有可能让Powershell将exe的stdout读取到byte []而不是通常的文本处理行数组中?如何捕获从Powershell运行的控制台EXE的二进制标准输出?

最好的我已经能够做到的是:

cmd /c foo.exe > foo.tmp 
$b = [io.file]::readallbytes('foo.tmp') 
del foo.tmp 

令人讨厌的,更何况这是不流化。任何更好的方式来做到这一点?

从PowerShell团队获得一些信息。简而言之,不幸的是,这并不容易。 :-(

的中等长度的答案是:http://poshcode.org/2175

长的答案是:Capture and Redirect Binary Process Output

+0

感谢跟进我希望它不会需要同样令人讨厌的东西,我不得不做C#,但很高兴让代码在poshcode上可用。另外:你只是让Lee Holmes出售,我正在拿起那本书的第二版。 – scobi 2010-12-23 22:04:26