4

エラーをキャッチし、エラーを生成する代わりに「エラーが発生しました」と書き出せると思われる次のコードがあります。

残念ながら、代わりに「コンピューターの再起動に失敗しました: アクセスが拒否されました」というエラーが引き続き表示されます。

なぜこれが起こっているのかはわかっていますが、エラーをキャッチして再フォーマットできるようにしたいと考えています。私は何を間違っていますか?

try {
    Restart-Computer -ComputerName MFG-KY-PC74 -Force 
} catch {
    Write-Host "An Error Occurred"
}
4

1 に答える 1

11

PowerShell には、終了エラーと非終了エラーがあります。前者はスクリプトの実行を終了し (キャッチされない場合)、 でキャッチできますがtry..catch、後者はスクリプトの実行を終了しません (キャッチするものがありません)。受け取ったエラーは非終了エラーである-ErrorAction Stopため、ステートメントに追加して終了エラーにする必要があります。

try {
  Restart-Computer -ComputerName MFG-KY-PC74 -Force -ErrorAction Stop
} catch {
  write-host "An Error Occurred"
}

$ErrorActionPreference = "Stop"または、すべてのエラーを終了エラーにするかどうかを設定できます。

詳細については、Scripting Guyブログのこの記事を参照してください。

于 2013-10-23T13:52:56.033 に答える