首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法抑制Write-Error cmdlet的“额外”输出?

有没有办法抑制Write-Error cmdlet的“额外”输出?
EN

Stack Overflow用户
提问于 2012-07-13 03:35:13
回答 2查看 3.5K关注 0票数 14

已查找此问题,但找不到解决方案。我所说的“额外”输出,是指写输出在错误消息文本之后发出的额外文本。即:

代码语言:javascript
复制
write-error -Message "test"

产生:

代码语言:javascript
复制
write-error -Message "test" : test
+ CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

我只想看到文本"test",并通过一个运行PS脚本的进程对象从stderr中检索它。

我知道一个复杂的正则表达式(捕获可能出现在类别中的所有潜在字符,等等)可以被开发出来,但我想避免这种情况。不要忘记,由于console的原因,Write-Error还会在每80个字符位置插入一个换行符,所以这也必须被考虑在内。

有没有办法告诉Powershell (2.0)在写stderr时不要那么冗长,只写消息部分?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-13 03:57:08

我认为限制错误的输出是不可能的,但你可以像这样解决:

代码语言:javascript
复制
$Host.UI.WriteErrorLine("My custom error")
票数 8
EN

Stack Overflow用户

发布于 2012-07-13 16:55:22

$Host.UI.WriteErrorLine不更新$error变量:

代码语言:javascript
复制
PS> $error.Clear()
PS> $Host.UI.WriteErrorLine("My custom error")
My custom error

PS> $Error.Count
0

您应该使用Write-Error cmdlet,但输出仍然很详细:

代码语言:javascript
复制
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“用于短消息。

代码语言:javascript
复制
PS> $ErrorView="CategoryView"
PS> Write-Error "My custom error"
NotSpecified: (:) [Write-Error], WriteErrorException
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11459324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档