2016-08-14 55 views
1

我有一个python脚本,将调用nmake。我想在PowerShell中调用这个脚本如下。为什么在添加重定向之后PowerShell显示错误在行尾?

python D:\build.py -f folder 

它工作正常,并输出如下:

Microsoft (R) Program Maintenance Utility Version 11.00.50727.1 
Copyright (C) Microsoft Corporation. All rights reserved. 

但是,如果我添加了重定向使所有stderr&stdoutbuild.log如下,它显示红色的错误:

python D:\build.py -f folder 2>&1 | tee build.log 

python : 
At line:1 char:1 
+ python D:\source_code\media\media\build_system\build.py -f xplatform_ ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:String) [], RemoteException 
    + FullyQualifiedErrorId : NativeCommandError 

Microsoft (R) Program Maintenance Utility Version 11.00.50727.1 
Copyright (C) Microsoft Corporation. All rights reserved. 

----编辑1 ----

我明白可能的原因是外部nmake可执行文件写入stderr,然后Powershell显示错误。

但是没有重定向的第一个例子没有显示错误。第二个将stderr重定向到stdout,实际上显示错误。那么有什么理由?

+1

的[PSEXEC抛出错误消息,但没有任何问题的作品]可能的复制(http://stackoverflow.com/questions/18380227/psexec-throws-error-messages - 但是,没有任何问题) – TessellatingHeckler

+0

但我重定向标准错误,并且第一个代码片段不显示错误 – Zijing

+0

好吧,我明白了。 Powershell中的重定向是重定向对象,而不是文本。即使在标准输出中,ErrorRecord对象仍然可以打印。 – Zijing

回答

相关问题