これらの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 :)"
}
ありがとうございます!
したがって、$ ErrorActionPreferenceが「続行」(デフォルト)に設定されていると、エラーメッセージが出力され、スクリプトnormalyが続行されます。 – Primoz
$ ErrorActionPreferenceが 'Stop'に設定されていると、最初に処理されなかった例外でスクリプトの実行が停止しますか? – Primoz
はい、正確です。個人的には、私はこのデフォルトオプションが混乱し、やや危険であることがわかります。予期しない継続が頻繁に起こることがあります。私はデフォルトで「停止」を好むだろう、そして、それが私のPSプロファイルで最初にやっていることだ。 –