如何让PowerShell保留多行异常中的换行符正常显示
PowerShell保留抛出异常中的换行符方法
在PowerShell 7.2.6环境下,使用ConciseView错误视图时,抛出的多行异常消息里的换行符会被自动替换为空格。例如执行以下代码:
$newline = [System.Environment]::NewLine throw "multiline$newline test"
输出的异常信息中,换行位置会变成空格;但切换到DetailedView时,换行符能正常保留。要让ConciseView下也保留换行,可采用以下几种方法:
方法一:临时切换错误视图
在抛出异常前将错误视图切换为DetailedView,完成操作后可按需切回ConciseView:
$ErrorView = 'DetailedView' $newline = [System.Environment]::NewLine throw "multiline$newline test" # 如需恢复原视图,执行:$ErrorView = 'ConciseView'
方法二:抛出自定义异常对象
直接创建System.Exception类型的对象并抛出,该方式能在ConciseView下保留换行:
$newline = [System.Environment]::NewLine $ex = [System.Exception]::new("multiline$newline test") throw $ex
也可以用Write-Error搭配-ErrorAction Stop实现相同效果:
$newline = [System.Environment]::NewLine Write-Error "multiline$newline test" -ErrorAction Stop
方法三:查看$Error集合中的原始异常
即使ConciseView显示时替换了换行,$Error集合中存储的原始异常对象仍保留完整的换行格式,可通过以下命令查看:
$Error[0].Exception.Message
内容的提问来源于stack exchange,提问作者Carl in 't Veld
相关产品推荐
相关产品推荐

