我在PowerShell命令行输入:
java -jar closure-compiler.jar --js temp1.js --js_output_file temp2.js
并生成此错误输出:
temp1.js:359: WARNING - Suspicious code. The result of the 'getprop' operator is not being used.
$acms.x
^
0 error(s), 1 warning(s)
(我确切地知道JavaScript有什么问题:这不是问题所在。)
我想捕获此错误输出。但是,如果我尝试:
$errs = java -jar closure-compiler.jar --js temp1.js --js_output_file temp2.js
$ errs结束为空。但是,如果我尝试:
java -jar closure-compiler.jar --js temp1.js --js_output_file temp2.js 2>errs.txt
errs.txt捕获了这个:
java.exe : temp1.js:359: WARNING - Suspicious code. The result of the 'getprop' operator is not being used.
At line:1 char:5
+ java <<<< -jar closure-compiler.jar --js temp1.js --js_output_file temp2.js 2>errs.txt
+ CategoryInfo : NotSpecified: (temp1.js:359: W...not being used.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
$acms.x
^
0
error(s),
1
warning(s)
显然,闭包编译器输出的错误与PowerShell错误输出交错。
有没有办法只捕获闭包编译器输出?
答案 0 :(得分:3)
如果你这样做:
$errs = command 2>&1
$errs.Exception
会给你留言。
如果只发生了错误(并且只有一个),那么$ errs会有ErrorRecord
,您将能够执行上述操作并获得所需的错误。
否则,它将是错误记录和/或正常输出的数组。
所以你必须这样做
$errs | ?{$_.GetType().Name -eq "ErrorRecord"} | select -expand exception