2012年7月3日火曜日

Powershell コマンド実行にエラー判断

  • このエントリーをはてなブックマークに追加


Powershellスクリプトを書く時にエラー処理を入れるケースがほとんどです。コマンドの実行に成功か失敗かについての判断方法が幾つかあります。

1,$?で判断

一般的なPowershellのコマンドの実行後、判断

成功の場合、$?は$true、失敗の場合は$false

 

2、Trapで処理

$?で判断できないコマンドがあるので、スクリプトの最後にTrap{}を追加することで、エラー処理をする

trap
{
        Write-Output "例外が発生しました。異常メッセージは下記です。"
        Write-Output $Error[0]
        Write-Output $Error[0].InvocationInfo.PositionMessage
}

 

3,Try{}Catch{}で処理

スクリプトの中に、異常が発生する部分をTry{}Catch{}でくくってエラーが起こった場合は、Catch{}で処理をする

Try{

#Errorが発生する恐れのあるコード

}Catch{

#エラーが発生した場合の処理を記述

}

 

4,Common Parametersの-ErrorAction、ErrorVariableを使う

ErrorActionにstop,continue,slientlycontinue,inquireを設定できる。Exchange のコマンドについては他の方法でチェックできないので、これを使う

try{
     Get-Item test –ErrorAction stop
}catch [System.Management.Automation.ActionPreferenceStopException]{
    Write-Output $_.exception
}

ErrorVariableでエラーを保存する配列を指定できる。$errの中の数で判断

$err=@()
stop-process 13 -ea silentlycontinue -ErrorVariable err
$err.countで判断

Windows Server 2012 Hyper-V Cookbook

新品価格
¥4,330から
(2012/12/20 20:55時点)