0

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

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

Get-ItemProperty C:\fake

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

4

1 に答える 1

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パラメータ引数を常に明示的に指定する必要がないようにするに$ErrorActionPreferenceは、スクリプト/関数の開始時に変数を設定します。

$ErrorActionPreference = 'Stop'

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

$PSDefaultParameterValues['Get-ItemProperty:ErrorAction'] = 'Stop'
$PSDefaultParameterValues['Do-OtherStuff:ErrorAction'] = 'Stop'
$PSDefaultParameterValues['Set-*:ErrorAction'] = 'Stop'
于 2016-12-12T01:12:31.760 に答える