標準エラーストリームにエコーする方法と実行可能ファイルのエラーストリームをリダイレクトする方法の両方を理解するのに問題があります。
Bourne Shell および Korn Shell のバックグラウンドから来ました。
# Write to stderr
echo "Error Message!" >&2
# Redirect stderr to file
/do/error 2>/tmp/err.msg
Write-Error
を使用して、stderrに書き込みます。 stderrをファイルにリダイレクトするには、次を使用します。
Write-Error "oops" 2> /temp/err.msg
または
exe_that_writes_to_stderr.exe bogus_arg 2> /temp/err.msg
PowerShellはエラーをエラーレコードとして書き込むことに注意してください。エラーレコードの詳細な出力を回避する場合は、次のようにエラー情報を自分で書き出すことができます。
PS> Write-Error "oops" -ev ev 2>$null
PS> $ev[0].exception
oops
-EV
は、-ErrorVariable
の短縮形(エイリアス)です。エラーはすべて、このパラメーターの引数で指定された変数に格納されます。エラーを$null
にリダイレクトしない限り、PowerShellは引き続きコンソールにエラーを報告します。
おそらくこれが必要です:
$Host.ui.WriteErrorLine('I work in any PowerShell Host')
以下も表示される場合がありますが、PowerShellホストはコンソールウィンドウ/デバイスであると想定されるため、あまり有用ではないと考えています。
[Console]::Error.WriteLine('I will not work in the PowerShell ISE GUI')