14

これを探しましたが、解決策が見つかりません。「余分な」出力とは、エラーメッセージテキストの後に Write-Output が出力する余分なテキストを意味します。すなわち:

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 への書き込み時にそれほど冗長ではなく、メッセージ部分のみを書き込むように指示する方法はありますか?

4

2 に答える 2

8

エラーの出力を制限することはできないと思いますが、次のように回避できます。

$Host.UI.WriteErrorLine("My custom error")
于 2012-07-12T19:57:08.187 に答える
6

$Host.UI.WriteErrorLine は $error 変数を更新しません。

PS> $error.Clear()
PS> $Host.UI.WriteErrorLine("My custom error")
My custom error

PS> $Error.Count
0

コマンドレットを使用する必要Write-Errorがありますが、出力はまだ詳細です。

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
于 2012-07-13T08:55:22.413 に答える