您好,我在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:[91mThis is a test [0m
测试一下
资讯资讯
当我在Powershell 5中执行相同的操作时,结果与我期望的一样:
拉拉拉
C:\ Users \ MoonChild \ Documents \ huh.ps1:这是一个测试+ CategoryInfo:未指定:(:) [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
输出:
Write-Error“这是一个测试” 2>&1> C:\ Temp \ test.txt:这是一个测试 + CategoryInfo:未指定:(:) [Write-Error],WriteErrorException + FullyQualifiedErrorId:Microsoft.PowerShell.Commands。 WriteErrorException
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句