У меня есть скрипт 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&stdout
идет к build.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
, на самом деле показывают ошибки. Так почему-то?
Возможный дубликат [PsExec Выдает сообщения об ошибках, но работает без каких-либо проблем] (http://stackoverflow.com/questions/18380227/psexec-throws-error-messages -but-works-without-any-problems) – TessellatingHeckler
, но у меня есть перенаправление stderr, а первые фрагменты кода не показывают ошибки – Zijing
Хорошо, я понял. Перенаправление в Powershell - это объект перенаправления, а не текст. И объект ErrorRecord все еще печатался даже в stdout. – Zijing