我最近读到了在PowerShell中不使用Write-Host的原因,所以我开始使用Write-Verbose,Write-Warning和Write- output……但是我从Write-Error得到的输出有一些问题。
下面是一个简单示例,演示了它在脚本中的使用。
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我不明白为什么它会在错误上面显示所有的代码。它只会让屏幕上的输出看起来非常混乱,特别是在长脚本中。例如,我目前正在开发一个脚本来自动化我们的用户创建、修改、禁用和删除过程,它有几百行代码,所以如果我想写一个非终止错误,我不想看到上面的整个代码……这太愚蠢了。
有什么建议吗。我考虑过使用write-warning,但是它确实是一个非终结性错误,我想display...so我正在尝试使用最佳实践。
谢谢,
发布于 2014-07-30 02:42:21
您需要使用Write-Error来输出非终止错误。但是,如果希望错误输出不那么详细,可以将$ErrorView变量设置为CategoryView,例如:
64> $ErrorView = 'CategoryView'
65> 1..5 | foreach{
>>> if ($_ -eq 5){
>>> Write-Error "Invalid result"
>>> }
>>> }
>>>
NotSpecified: (:) [Write-Error], WriteErrorExceptionhttps://stackoverflow.com/questions/25022255
复制相似问题