powershell - 重定向到 powershell 核心中的文件时,写入错误会给出奇怪的字符
问题描述
您好,我在 powershell 7.1 和 7.2 预览版中有以下测试代码。
Write-Output "Lalala" 1> C:\Temp\test.txt
Write-Error "This is a test" 2>&1 >> C:\Temp\test.txt
Write-Warning "Test Testt" 3>&1 >> C:\Temp\test.txt
Write-Information "Information Information" 6>&1 >> C:\Temp\test.txt
这会在文件中产生以下输出。写入错误输出显示奇怪的字符。
拉拉拉
[91mWrite-Error: [91m这是一个测试[0m
测试测试
资讯资讯
当我在 powershell 5 中执行相同操作时,结果与我预期的一样:
拉拉拉
C:\Users\MoonChild\Documents\huh.ps1 : 这是一个测试 + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,huh.ps1
测试测试
资讯资讯
powershell 核心是否有任何问题导致这种行为,有没有办法解决它?
解决方案
这种行为似乎是由新的错误视图模式引起的,可以通过$ErrorView
首选项变量进行更改。
默认值$ErrorView
是ConciseView
将 ANSI 转义码输出到文件(这是您所看到的,▯[91m
并且▯[0m
- 矩形是不可打印的 ESC 字符)。转义码仅对控制台输出有意义,它们对输出进行着色。重定向到文件时它们没有多大意义,所以这对我来说似乎是一个错误。
要获得 PS 5 行为,请设置$ErrorView = 'NormalView'
:
$ErrorView = 'NormalView'
Write-Error "This is a test" 2>&1 >> C:\Temp\test.txt
输出:
写入错误“这是一个测试” 2>&1 > C:\Temp\test.txt :这是一个测试 + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId:Microsoft.PowerShell.Commands.WriteErrorException
推荐阅读
- axapta - D365 FO 到期合同的简单查询
- react-native - 切换 React-Native 动画值
- javascript - 在自定义渲染函数中返回 Vue 组件以获取内容丰富的嵌入条目
- svg - 如何在离线 Progressive Web App 中与 SVG 资源交互?
- ios - NSXMLParser 读取 xml 文件时重复数据
- jdbc - 基于查询的 JDBC 源连接器 Kafka
- android - Android路径未关闭,我无法填充颜色
- ios - 使用 Metal 的旧设备上的内存使用量不断上升
- complex-event-processing - 是否可以按从 Siddhi 查询中的 JSON 输入中提取的字段进行分组?
- javascript - 如何通过使用 AJAX 和 PHP 进行迭代将 JSON 数据保存到新的 JSON 文件?