SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows PowerShell 入門

Windows PowerShell 入門(9)-エラー編

エラーのリダイレクト、エラーの変数とオブジェクト、例外処理

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

$Error変数

 PowerShellではエラーが発生するごとに、そのエラー内容を保存している変数があります。この変数は$Errorという自動変数で、配列型となっています。

 また、この変数に格納できる最大要素数は自動変数$MaximumErrorCountで決められており、256のエラー(規定値)を保持します。

 では、実際にエラーを発生させて$Error変数がどのように変わっていくのかを見てみます。(PowerShellを立ち上げていた方は、念のため起動し直してから始めてください)

 まずは、PowerShell立ち上げ時点の$Error変数の内容を確認しておきましょう。

PS C:\Work> $Error
PS C:\Work>

 この時点でエラーは発生していないので、何も格納されていません。下記のように入力して、エラーを発生させます。

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

 エラーを発生させた後の$Error変数を確認してみます。

PS C:\Work> $Error
Get-ChildItem : パス 'C:\Work\HOGE' が存在しないため検出できません。
発生場所 行:1 文字:4
+ dir  <<<< HOGE

 上記のように、先ほど発生した内容が格納されていることが分かります。

 $Errorは配列なので、要素数の変化について確認してみます。要素数はCountプロパティで確認することができます。

PS C:\Work> $Error.Count
1

 エラーは1つしか発生していないので、要素数は"1"となります。

 次に、もう1つエラーを発生させてみましょう。

PS C:\Work> mkdir HO*GE2
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\HOGE' が存在しないため検出できません。
発生場所 行:1 文字:4
+ dir  <<<< HOGE

 少し見づらいですが、2つのエラーが格納されていることが分かります。

 $Error変数は配列なので、下記のように要素番号を指定して1つずつエラーを取り出すことができます。

PS C:\Work> $Error[0]
New-Item : パスに無効な文字が含まれています。
発生場所 行:1 文字:34
+ param([string[]]$paths); New-Item <<<< -type directory -path $paths

 また$Error変数は、新しいエラーが発生すると常に$error[0]へ書き込みます。以前に$error[0]に代入されていたエラーは$error[1]へ、$error[1]のエラーは$error[2]へと移動します。

 このことから、最新のエラーは$error[0]を参照すればよいことが分かります。

次のページ
$?変数

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows PowerShell 入門連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2811 2008/08/25 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング