PowerShell удаляет цвета сообщений консоли при использовании tee-объекта - PullRequest
11 голосов
/ 22 июля 2010

Есть ли способ остановить PowerShell от удаления цветов консольных сообщений при использовании tee-object?

Когда я запускаю без tee-object, я получаю приятную ошибку и подробные цвета сообщений PowerShell, например:

powershell.exe -noprofile -file $project_root/test_main.ps1

с цветом http://i32.tinypic.com/250779w.jpg

Однако, когда я использую tee-объект (б / к я хочу войти в консоль и файл), цвета сообщений не отображаются на консоли (Я знаю, что файл не будет отображаться) вот так:

powershell.exe -noprofile -file $project_root/test_main.ps1 | tee-object -FilePath $log

без цвета http://i29.tinypic.com/bzpc2.jpg

Если powershell просто использует tee-object для дополнительного разделения вывода в файлк консоли, почему я теряю форматирование консоли?

1 Ответ

5 голосов
/ 22 июля 2010

Попробуйте вместо этого:

powershell.exe -noprofile -command { $path\test_main.ps1 | tee-object $log }

Это происходит потому, что эта часть выполняется первой:

powershell.exe -noprofile -file $project_root/test_main.ps1 

Так, что то, что видит tee-объект, является выводом собственного EXE-файла. И AFAICT, PowerShell не выводит записи об ошибках (или выделяет) вывод stderr из собственного EXE-файла (если вы не перенаправите поток ошибок, например, 2>err.log.

...