他のいくつかの外部サードパーティEXEユーティリティと統合されたpowershellスクリプトがあります。それぞれは独自の種類のエラーを返すだけでなく、いくつかのエラー以外のエラー出力をstderrに返します(私は間違いなく私はこれらのユーティリティを書きませんでした)。だから私は現在、各ユーティリティの出力を解析し、いくつかのキーワードマッチングを行っています。このアプローチはうまくいきますが、私はこれらのスクリプトとユーティリティを使用する際に、実際にエラーが発生した場合にさらに例外を追加する必要があると感じています。ですから、私は拡張可能なものを作成する必要があります。モジュールのような外部ファイルに追加することができる構造の可能性があります。powershellのカスタムエラー処理の改善
私はカスタムPSObjectの機能を活用してこれを行うことを考えていましたが、詳細については苦労しています。現在、各ユーティリティのための私の解析ルーチンは、次のとおりです。私はエラーではありません$ JobOut内の$ ERRTYPEにおけるキーワードの一部が含まれているいくつかのユーティリティに実行されるまで
foreach($errtype in {'error','fail','exception'})
{
if($JobOut -match $errtype){ $Status = 'Failure' }
else if($JobOut -match 'Warning'){$Status = 'Warning' }
else { $Status = 'Success' }
}
は、これは非常に簡単になります。ですから、このメソッドはすぐに制御から抜け出す可能性を秘めている見ることができると私はむしろ新しいエラールールを追加するには、コアコードの編集を開始しませんよう
foreach($errtype in {'error','fail','exception'})
{
if($JobOut -match 'error' -and(-not($JobOut -match 'Error Log' }
elseif($JobOut -match $errtype){ $Status = 'Failure' }
else if($JobOut -match 'Warning'){$Status = 'Warning' }
else { $Status = 'Success' }
}
:だから今は、ロジックにいくつかの例外を追加する必要があります新しいエラーを見つけるたびに
おそらく、エラーであるロジックのロジックを含む各ユーティリティのエラー構造を作成する方法はありますか。新しいルールを追加するのは簡単でしょうか?
本当にありがとうございます。
、 '{ 'エラーが'、 '失敗'、 '例外が'} '新しい範囲である、スクリプトブロックは、作成するのが比較的高価です。この特定の場合、中括弧はまったく必要ありません。 – wOxxOm
ああ。私はシェルスクリプトを実行するのに多くの時間を費やしました。何らかの理由で表記法が私に続くのです。先端に感謝します。 – todd1215
もう1つのヒントは、Don Jonesが教えている方法です。作業を行うサブ関数を持つメイン関数を作成します。各サブ関数の最後に、PowerShellのデフォルトがすべて出力されるので、 '[PsCustomObject] @ {Item1 = $ Data}'形式を使用します。次に、サブ機能2は、サブ機能1からの出力をチェックし、処理を続けることができる。等々。 – user4317867