我最近在阅读有关不在PowerShell中使用Write-Host的原因,所以我开始使用Write-Verbose,Write-Warning和Write-Output ......但是我的输出有些问题我来自写错误。
这是一个在脚本中使用的简单示例。
1..5 | foreach{
if ($_ -eq 5){
Write-Error "Invalid result"
}
}
当出现错误时,我得到以下内容。
1..5 | foreach{
if ($_ -eq 5){
Write-Error "Invalid result"
}
} : Invalid result
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
我不明白为什么它显示错误上方的所有代码。它只是让屏幕上的输出看起来非常混乱,特别是在长脚本中。例如,我正在开发一个脚本来自动化我们的用户创建,修改,禁用和删除过程,它是几百行,所以如果我想写一个非终止错误,我不希望看到它上面的整个代码......那太傻了。
任何建议。我想过使用写警告,但是它确实是一个非终止错误,我想显示...所以我试图使用最佳实践。
谢谢,
答案 0 :(得分:1)
您需要使用Write-Error
输出非终止错误。但是,如果您希望错误输出更简洁,可以将$ErrorView
变量设置为CategoryView
,例如:
64> $ErrorView = 'CategoryView'
65> 1..5 | foreach{
>>> if ($_ -eq 5){
>>> Write-Error "Invalid result"
>>> }
>>> }
>>>
NotSpecified: (:) [Write-Error], WriteErrorException