2016-12-11 6 views
0

ファイルが見つからないという例外をトラップするトラップコマンドを作成しようとしています。これはコードです:トラップの仕組みが分かりません

Trap { 
    Clear-Host 
    Write-Host "The file you are looking for does not exist" 
} 

Get-ItemProperty C:\fake 

私はこれを行う方法を誤解していますか?

+0

'は、Get-ItemProperty C: \ fake -ErrorAction Stop' – beatcracker

+0

'get-help trap -sh'を実行することをお勧めします。 – LotPings

+0

@ user2120893あなたが直面した実際の問題を含むように質問を更新できますか?これは、同様の問題を抱えている他のユーザーがあなたの質問を見つけて(アップアップして;-)、例えばトラップがエラーを捕捉できなかったのを助けます。エラーが発信者にどのように吹き込まれたかに問題はありましたか?等 – jpaugh

答えて

4

トラップはエラーのみ(パイプラインを停止し、エラーを)終了上で実行するので、最初のあなたは問題のあるコマンドレットのerrorActionという動作を変更する必要があります:

Trap { 
    Clear-Host 
    Write-Host "The file you are looking for does not exist" 
} 

Get-ItemProperty C:\fake -ErrorAction Stop 

後まで泡立てるからエラーレコードを抑止するには呼び出し側、トラップ内から現在のスコープからのリターン:

Trap { 
    Clear-Host 
    Write-Host "The file you are looking for does not exist" 
    return 
} 

Get-ItemProperty C:\fake -ErrorAction Stop 

-ErrorAction Stopパラメータ引数を指定する必要がないために明示的にすべての時間ument、スクリプト/関数の先頭で$ErrorActionPreference変数を設定します。

$ErrorActionPreference = 'Stop' 

または特定のコマンドレットのためにそれを設定する$PSDefaultParameterValuesハッシュテーブルを使用します。

$PSDefaultParameterValues['Get-ItemProperty:ErrorAction'] = 'Stop' 
$PSDefaultParameterValues['Do-OtherStuff:ErrorAction'] = 'Stop' 
$PSDefaultParameterValues['Set-*:ErrorAction'] = 'Stop' 
+0

ありがとう、私は実際に私の本を理解していないトラップの仕組みの説明 – user2120893

関連する問題