如何配置PowerShell 7,使其错误消息恢复PowerShell 5.1的无格式样式?
解决PowerShell 7错误日志含ANSI转义码的问题
PowerShell 7默认会在输出中包含ANSI颜色转义序列,即使重定向到文件也会保留,导致日志可读性下降。以下几种方法可以恢复PowerShell 5风格的纯文本错误日志:
方法1:调用pwsh时直接禁用颜色输出
在CMD的调用命令中添加-NoColor参数,强制PowerShell不输出颜色转义码,同时推荐搭配-NoProfile和-NonInteractive避免加载配置和交互干扰:
pwsh.exe -NoProfile -NonInteractive -NoColor -command "& 'c:\binaries\scripts\ServiceNow.ps1'" >> my.log
方法2:永久修改PowerShell 7配置
如果希望所有pwsh会话默认都输出纯文本格式,可修改用户配置文件:
- 打开PowerShell 7,执行命令打开配置文件:
notepad $PROFILE - 如果提示文件不存在,选择创建新文件。
- 在文件中添加一行配置:
$PSStyle.OutputRendering = 'PlainText' - 保存文件后,后续启动的所有pwsh会话都会自动使用纯文本输出,重定向日志不再包含转义码。
方法3:在目标脚本内部强制纯文本输出
如果只想针对特定脚本生效,可在脚本开头加入以下代码,仅当运行在PowerShell 7及以上版本时禁用颜色格式:
# 针对PowerShell 7+禁用颜色输出 if ($PSVersionTable.PSVersion.Major -ge 7) { $PSStyle.OutputRendering = 'PlainText' }
PowerShell 5在重定向到文件时会自动剥离颜色转义码,而PowerShell 7为了兼容现代终端的颜色显示默认保留了这些序列,通过以上方法可以还原到PS5的日志格式。
内容的提问来源于stack exchange,提问作者Vladimir Baranov
相关产品推荐
相关产品推荐

