前回はErrorRecordオブジェクトについて説明しました。
PowerShellではエラーが発生するごとに、そのエラー内容(ErrorRecord)を保存している変数があります。
この変数は、"Error"という名前がついた自動変数でSystem.ArrayList型となっています。
また、この変数に格納できる最大要素数は自動変数 MaximumErrorCount で決められておりデフォルト値は256となっています。
では、実際にエラーを発生させてError変数がどのように変わっていくのかをみてみたいと思います。(PowerShellを立ち上げていた方は、念のため起動し直してから始めてください)
まずは、現在のError変数の内容を確認しておきましょう。
PS C:\Work> $Error PS C:\Work>
この時点ではエラーは発生していないので、何も格納されていません。
次に前回同様、下記のように入力してエラーを発生させます。
PS C:\Work> dir HIRO.txt Get-ChildItem : パス 'C:\Work\HIRO.txt' が存在しないため検出できません。 発生場所 行:1 文字:4 + dir <<<< HIRO.txt
エラーを発生させた後のError変数はどうなったでしょうか?
PS C:\Work> $Error Get-ChildItem : パス 'C:\Work\HIRO.txt' が存在しないため検出できません。 発生場所 行:1 文字:4 + dir <<<< HIRO.txt
上記のように、先ほど発生した内容が格納されていることがわかります。
要素数はどうなったでしょうか?
PS C:\Work> $Error.Count 1
エラーは1つしか発生していないので、当然"1"となります。
では、このError変数が本当にErrorRecordオブジェクトを格納しているのかGetType()メソッドで確かめてみましょう。
(ここでは要素番号0の型をGetType()メソッドで確認しています。)
PS C:\Work> $Error[0].GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True ErrorRecord System.Object
次に、もう1つエラーを発生させてみましょう。
PS C:\Work> mkdir HIRO*2.txt New-Item : パスに無効な文字が含まれています。 発生場所 行:1 文字:34 + param([string[]]$paths); New-Item <<<< -type directory -path $paths
この状態でError変数の内容を確認してみると
PS C:\Work> $Error New-Item : パスに無効な文字が含まれています。 発生場所 行:1 文字:34 + param([string[]]$paths); New-Item <<<< -type directory -path $paths Get-ChildItem : パス 'C:\Work\HIRO.txt' が存在しないため検出できません。 発生場所 行:1 文字:4 + dir <<<< HIRO.txt
少し見づらいですが、2つのエラーが格納されていることがわかります。
Error[0]には何が格納されているか確認してみましょう。
PS C:\Work> $Error[0] New-Item : パスに無効な文字が含まれています。 発生場所 行:1 文字:34 + param([string[]]$paths); New-Item <<<< -type directory -path $paths
ご覧の通りインデックス0には、常に最後に発生したエラーが格納されます。
このように、Error変数はエラーの履歴をMaximumErrorCount変数で定められた数だけ保持しますので、過去にさかのぼってエラーを追跡することが可能です。
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