$?変数というものがあります。
これは処理全体が成功した場合にはtrue、それ以外の場合はfalseとなります。
この変数を使用すると、エラーメッセージが表示されなくてもエラーが発生したかどうかを確認できるため、スクリプトの中で使用すると効果を発揮します。
まずは、この変数の動きを見てみましょう。
なにもエラーが発生していない状態で$?変数の中身を確認すると
PS C:\Work> $? True
上記のようにTrueを返します。
しかし下記のようにエラーを発生させると
PS C:\Work> dir HIRO2.txt Get-ChildItem : パス 'C:\Work\HIRO2.txt' が存在しないため検出できません。 発生場所 行:1 文字:4 + dir <<<< HIRO2.txt PS C:\Work> $? False
上記のようにfalseを返します。
ではスクリプトの中でどう使用すればよいか?
1つ例を挙げたいと思います。
下記はdirコマンドを使用していますが、リダイレクトを使用してエラーを変数に代入するようにしています。
このためエラーはコンソールへは表示されません。
エラーメッセージが表示されないので、見た目にはエラーが発生したかどうかを確認できませんが、$?変数の中身を確認すれば、dirコマンドの実行結果が成功したか失敗したかを確認できるので、独自のエラー処理を記述することが可能です。
PS C:\Work> $ret1 = dir HIRO 2>&1 PS C:\Work> if ( ! $? ) { "エラーが発生しました" } エラーが発生しました
このように$Error変数や$?変数を使用すれば、エラーに対する処理を記述しやすくなりますので是非活用してみてください。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail