Wednesday, July 02, 2008

PowerShellでは、エラーが発生した場合の振る舞いを変更することが可能です。

振る舞いの変更方法には2種類あり、コマンドレットごと、またはすべてのエラーに対して設定できます。

コマンドレットごとに指定する場合には -ErrorActionパラメータを、すべてのエラーに対して共通の振る舞いを行うようにするには$ErrorActionPreference変数を設定します。

設定可能な値は3つありますので、それぞれについてみてみましょう。

continue

デフォルトではContinueになっています。エラーが発生した場合はメッセージが出力されます。

エラーの内容は$Error変数に追加され、$?変数はfalseとなります。スクリプトは次の行から実行されます。

silentlycontinue

エラーが発生してもメッセージは出力されません。

エラーの内容は$Error変数に追加され、$?変数はfalseとなります。スクリプトは次の行から実行されます。

stop

エラーが発生してもメッセージは出力されません。

エラーの内容は$Error変数に追加され、$?変数はfalseとなります。スクリプトは停止します。

 

-ErrorActionパラメータの使用方法

-ErrorActionパラメータに"continue"を設定した場合はエラーメッセージが出力されます。

PS C:\Work> Get-ChildItem HIRO -ErrorAction "continue"
Get-ChildItem : パス 'C:\Work\HIRO' が存在しないため検出できません。
発生場所 行:1 文字:14
+ Get-ChildItem  <<<< HIRO -ErrorAction "continue"

-ErrorActionパラメータに"silentlycontinue"を設定した場合はエラーメッセージが出力されません。

PS C:\Work> Get-ChildItem HIRO -ErrorAction "silentlycontinue"
PS C:\Work>

$ErrorActionPreference変数の使用方法

$ErrorActionPreference変数へcontinueを設定する場合は下記のようにします。

PS C:\Work> $ErrorActionPreference = "continue"

$ErrorActionPreference変数へsilentlycontinueを設定する場合は下記のようにします。

PS C:\Work> $ErrorActionPreference = "silentlycontinue"

この状態で、さきほどエラーが発生したコマンドを実行してみましょう。

PS C:\Work> Get-ChildItem HIRO
PS C:\Work>

今度はエラーメッセージは表示されません。

$ErrorActionPreference変数にsilentlycontinueを設定した効果が現れていることがわかります。

このように、-ErrorActionパラメータや$ErrorActionPreference変数は、エラー発生時の振る舞いを変更することが可能ですので、ぜひ仕様用途に応じて使い分けてみてください。

Wednesday, July 02, 2008 10:54:23 PM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: