You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Write-Host保留PowerShell中Get-Error输出的默认着色?

解决方案

要保留Get-Error的默认着色效果,同时避免将输出写入成功流,直接使用Out-Host即可——它会让对象通过PowerShell的格式化引擎直接输出到控制台,保留所有颜色和格式,且不会进入成功流。

修改后的代码示例:

function blah {
try {
  throw 'blah'
} catch {
  $_ | Get-Error | Out-Host
}
}

原理说明

  • 直接执行$_ | Get-Error时,对象会被写入成功流(流1),不符合你的需求。
  • Out-String | Write-Host丢失颜色,是因为Out-String序列化对象时,没有保留PowerShell格式化引擎生成的ANSI颜色转义码,Write-Host接收纯文本后无法还原着色。
  • Out-Host绕过了成功流,直接将对象交给控制台渲染,完全保留Get-Error的默认着色(包括堆栈信息中的红色下划线标记),同时不会让输出进入后续管道或被变量捕获。

验证方式

运行$result = blah,控制台会显示带颜色的错误详情,但$result变量为空,说明输出未进入成功流;或者运行blah | Out-Null,控制台依然会显示错误信息,进一步确认输出未被管道捕获。

内容的提问来源于stack exchange,提问作者Brett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:43:09