Там какой-либо путь состоит в том, чтобы мешать PowerShell удалить консольные цвета сообщения при использовании объекта мишени?
Когда я работаю без объекта мишени, я получаю хорошую ошибку и подробные powershell цвета сообщения как это:
powershell.exe -noprofile -file $project_root/test_main.ps1
Однако, когда я использую объект мишени (b/c, я хочу регистрироваться к консоли и файлу), цвета сообщения не показывают на консоли (я знаю, что файл не покажет его) как это:
powershell.exe -noprofile -file $project_root/test_main.ps1 | tee-object -FilePath $log
Если powershell просто использует объект мишени разделить вывод в файл в дополнение к консоли, почему я теряю консольное форматирование?
Попробуйте вместо этого:
powershell.exe -noprofile -command { $path\test_main.ps1 | tee-object $log }
Это происходит потому, что эта часть выполняется первой:
powershell.exe -noprofile -file $project_root/test_main.ps1
Таким образом, то, что видит tee-object, это вывод родного EXE. И AFAICT, PowerShell не выводит записи об ошибках (или не выделяет) вывод stderr из родного EXE (если вы не перенаправляете поток ошибок, например, 2>err.log
.