如何在PowerShell中捕获闭包编译器输出?

时间:2011-11-25 15:39:20

标签: javascript powershell google-closure-compiler

我在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错误输出交错。

有没有办法只捕获闭包编译器输出?

1 个答案:

答案 0 :(得分:3)

如果你这样做:

$errs = command 2>&1

$errs.Exception会给你留言。

如果只发生了错误(并且只有一个),那么$ errs会有ErrorRecord,您将能够执行上述操作并获得所需的错误。

否则,它将是错误记录和/或正常输出的数组。

所以你必须这样做

$errs | ?{$_.GetType().Name -eq "ErrorRecord"} | select -expand exception