2011-01-14 3 views
7

これらの2つの簡単なサンプルを実行すると、コンソールにエラーメッセージが表示されるのはなぜですか?PowerShell 2.0と例外の処理方法は?

のGet-WmiObjectコマンドを:: は、私が "エラー検査は:)" のinstedコンソールに印刷され得ることを望んRPCサーバーを利用できません です。 (HRESULTからの例外: 0x800706BA)ラインで:3文字:15 +は、Get-WmiObjectコマンドを< < < < -ComputerName possibly.nonexisting.domain.com -Credential(GET-資格)-ClassのWin32_LogicalDisk + CategoryInfo:はInvalidOperation: (:) [プレゼント-WmiObjectコマンド]、 COMExceptionは+ FullyQualifiedErrorId:GetWMICOMException、Microsoft.PowerShell.Commands.GetWmiObjectCommand

又は

ゼロで除算しようとしました。ラインで:3 チャー:13 + $ I = 1/< < < + CategoryInfo:NotSpecified:(:) []、 ParentContainsErrorRecordException + FullyQualifiedErrorId:のRuntimeException

第1の例:

try 
{ 
    $i = 1/0 
    Write-Host $i  
} 
catch [Exception] 
{ 
    Write-Host "Error testing :)" 
} 

第二の例:

try 
{ 
    Get-WmiObject -ComputerName possibly.nonexisting.domain.com -Credential (Get-Credential) -Class Win32_logicaldisk 
} 
catch [Exception] 
{ 
    Write-Host "Error testing :)" 
} 

ありがとうございます!

答えて

11

まず例のエラーは、コンパイル/解析時に起こる

(PowerShellは十分に賢いです)、コードでも実行されず、それは確かに、何かをキャッチすることはできませんように。代わりにこのコードを試してみてください、あなたは、例外をキャッチします:

try 
{ 
    $x = 0 
    $i = 1/$x 
    Write-Host $i 
} 
catch [Exception] 
{ 
    Write-Host "Error testing :)" 
} 

第二の例

あなたがグローバル$ErrorActionPreference = 'Stop'を設定した場合、あなたは「エラーテスト:)」予想通り、印刷を取得します。しかし、あなたの$ErrorActionPreferenceはおそらく'Continue'です:この場合、終了エラー/例外はなく、エンジンによってホストに印刷された非終了エラーメッセージが表示されます。

グローバル$ErrorActionPreferenceオプションの代わりに、Get-WmiObjectパラメータErrorActionで再生することもできます。 Stopに設定してください。例外が発生します。

try 
{ 
    Get-WmiObject -ErrorAction Stop -ComputerName possibly.nonexisting.domain.com -Credential (Get-Credential) -Class Win32_logicaldisk 
} 
catch [Exception] 
{ 
    Write-Host "Error testing :)" 
} 
+0

したがって、$ ErrorActionPreferenceが「続行」(デフォルト)に設定されていると、エラーメッセージが出力され、スクリプトnormalyが続行されます。 – Primoz

+0

$ ErrorActionPreferenceが 'Stop'に設定されていると、最初に処理されなかった例外でスクリプトの実行が停止しますか? – Primoz

+1

はい、正確です。個人的には、私はこのデフォルトオプションが混乱し、やや危険であることがわかります。予期しない継続が頻繁に起こることがあります。私はデフォルトで「停止」を好むだろう、そして、それが私のPSプロファイルで最初にやっていることだ。 –

関連する問題