PowerShell 在使用 tee-object 时删除控制台消息颜色
使用 tee-object 时,有什么方法可以阻止 PowerShell 删除控制台消息颜色?
当我在没有 tee-object 的情况下运行时,我得到了很好的错误和详细的 powershell 消息颜色,如下所示:
powershell.exe -noprofile -file $project_root/test_main.ps1
但是,当我使用 tee-object (b/c 我想记录到控制台和文件)时,消息颜色不会显示在控制台上(我知道文件不会显示它),如下所示:
powershell.exe -noprofile -file $project_root/test_main.ps1 | tee-object -FilePath $log
如果除了控制台之外,powershell 仅使用 tee-object 将输出拆分为文件,为什么我会丢失控制台格式?
Is there any way to stop PowerShell from removing console message colors when using tee-object?
When I run without tee-object I get the nice error and verbose powershell message colors like this:
powershell.exe -noprofile -file $project_root/test_main.ps1
However, when I'm using tee-object (b/c I want logging to console & file), the message colors are not shown on the console (I know the file won't show it) like this:
powershell.exe -noprofile -file $project_root/test_main.ps1 | tee-object -FilePath $log
If powershell is just using tee-object to split the output to a file in addition to the console, why am I losing the console formatting?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试这样做:
发生这种情况是因为这部分首先执行:
这样 tee-object 看到的是本机 EXE 的输出。而且,AFAICT,PowerShell 不会从本机 EXE 输出错误记录(或突出显示)stderr 输出(除非您重定向错误流,例如
2>err.log
。Try this instead:
This happens because this part is executed first:
Such that what tee-object sees is the output of a native EXE. And AFAICT, PowerShell doesn't output error records (or highlight) stderr output from a native EXE (unless you redirect the error stream e.g.
2>err.log
.