使用tee-object时,有没有办法阻止PowerShell删除控制台消息颜色?
当我在没有tee-object的情况下运行时,我得到了这样的错误和详细的powershell消息颜色:
powershell.exe -noprofile -file $project_root/test_main.ps1
with color http://i32.tinypic.com/250779w.jpg
然而,当我使用tee-object(b / c我想要登录到控制台和文件)时,控制台上没有显示消息颜色(我知道文件不会显示它),如下所示:
powershell.exe -noprofile -file $project_root/test_main.ps1 | tee-object -FilePath $log
no color http://i29.tinypic.com/bzpc2.jpg
如果powershell只是使用tee-object将输出拆分为除控制台之外的文件,为什么我会丢失控制台格式?
答案 0 :(得分:5)
请改为尝试:
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不会从本机EXE输出错误记录(或突出显示)stderr输出(除非您重定向错误流,例如2>err.log
。