寻找此但无法找到解决方案。 “额外”输出,我的意思是写入输出在错误消息文本后发出的额外文本。即:
write-error -Message "test"
产生
write-error -Message "test" : test
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
我想只看到文本“test”,并通过运行PS脚本的Process对象从stderr中检索它。
我知道可以开发一个复杂的正则表达式(以捕获可能出现在类别中的所有潜在字符等),但我想避免这种情况。不要忘记,由于控制台,Write-Error也会在每80个字符位置注入一个换行符,因此也必须考虑到这一点。
有没有办法告诉Powershell(2.0)在写入stderr并且只写消息部分时不那么罗嗦?
答案 0 :(得分:7)
我认为不可能限制错误的输出,但你可以解决这个问题:
$Host.UI.WriteErrorLine("My custom error")
答案 1 :(得分:4)
$ Host.UI.WriteErrorLine不更新$ error变量:
PS> $error.Clear()
PS> $Host.UI.WriteErrorLine("My custom error")
My custom error
PS> $Error.Count
0
您应该使用Write-Error
cmdlet,但输出仍然是详细的:
PS> Write-Error "My custom error"
Write-Error "My custom error" : My custom error
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
可以选择使用内置的$ ErrorView变量输出较少的详细消息,其默认值为“Normal”(详细)。您可以将其设置为“CategoryView”以获取简短消息。
PS> $ErrorView="CategoryView"
PS> Write-Error "My custom error"
NotSpecified: (:) [Write-Error], WriteErrorException