1

我最近在阅读关于不在 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

我不明白为什么它会显示错误上方的所有代码。它只会使屏幕上的输出看起来非常混乱,尤其是在长脚本中。例如我目前正在开发一个脚本来自动化我们的用户创建、修改、禁用和删除过程,它有几百行,所以如果我想写一个非终止错误,我不想看到上面的整个代码....这只是愚蠢的。

有什么建议么。我考虑过使用写警告,但它确实是我想要显示的非终止错误......所以我正在尝试使用最佳实践。

谢谢,

4

1 回答 1

1

您需要用于Write-Error输出非终止错误。但是,如果您希望错误输出不那么冗长,您可以将$ErrorView变量设置为CategoryView例如:

64> $ErrorView = 'CategoryView'
65> 1..5 | foreach{
>>>     if ($_ -eq 5){
>>>         Write-Error "Invalid result"
>>>     }
>>> }
>>>
NotSpecified: (:) [Write-Error], WriteErrorException
于 2014-07-29T18:42:21.227 回答