私は、何百もの仮想サーバーにまたがるタスクを管理するスクリプトを用意しています。ジョブ内でInvoke-Commandを実行し、詳細をWebページに出力します。Invoke-Commandからのリダイレクトエラー
私の問題は、パイプされていない、Invoke-Commandコマンドスクリプトブロック内スローされたエラーです:
このコマンドが正常にパイプ文字列としてエラー(サーバーに接続することはできません)出力:
Invoke-Command [dead server] -ScriptBlock { Write-Error "Test" } *>&1 | Out-String
このコマンドを完全にエラーを無視するようで、それがすべてでは表示されません。文字列として
Invoke-Command [live server] -ScriptBlock { Write-Error "Test" } *>&1 | Out-String
このコマンドを正しくパイプエラーアウト:
Invoke-Command [live server] -ScriptBlock { Write-Error "Test" *>&1 | Out-String }
第1の例と第3の例の両方を使用すると、すべてをパイプすることができますが、それほど簡単ではありません。私はおそらく、これを使って複雑なスクリプトを実行する必要があります。エラーが検出されるようにすべてのコマンドをリダイレクトすることを期待するのは無理です。
私はそれをすべてパイプするために何かを見つけることさえできません。
実際には機能しますが、スクリプトブロックを関数に変換する方法がないように思われるので、非常にラウンドアバウトのように見えるので、スクリプトブロックをPSSession内のジョブ内にあるInvoke-Commandの関数...
ここの質問?そして、なぜあなたは何か意味のある結果をもたらすと期待していますか? –
これは誤字です。問題は、Invoke-Commandまたはその内部から生成されたすべてのエラーを出力ストリームにパイプする方法です。特に私の場合は、Foreach-Objectへのパイプです。 –
すべてのエラーを '$ Error'変数に戻すことができます... – iRon