「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

PowerShell を使っていると、次のようなエラーが急に表示されることがあります。

初見では意味が分かりにくいエラーですが、原因と対処法さえ理解してしまえば、再発防止が簡単になります。
本記事では、このエラーの意味、よくある発生原因、そして具体的な対処方法まで分かりやすく解説いたします。
Cannot index into a null array | PowerShell


◆ “Cannot index into a null array” の意味

このエラーは直訳すると「null の配列にインデックス指定してアクセスできません」という意味です。
つまり $array[0] のように要素を参照しようとした時、その配列そのものが存在しない(null) 場合に発生します。

例:

PowerShell では空配列 @()null は異なる扱いになります。

状態OK/エラー
配列が空だが存在する@()$array[0] → エラー(ただし null ではない)
配列が存在しない$null$array[0] → Cannot index into a null array が発生

◆ よくある発生原因

● ① コマンドレットの結果が返ってきていない

例:ファイル検索結果を変数に入れている場合

→ フォルダが存在しない、またはファイルが1つも無い場合 $files$null になります。


● ② ループや条件分岐の前提が間違っている

配列前提で $result.Count を使うなど、変数の状態を確認せずに処理しているケースです。


● ③ Web API・JSON変換・正規表現などの結果が期待通りでない

例:

items が存在しない場合、同じく null になります。


◆ 対処法

✔ 方法1:変数が null か確認する


✔ 方法2:@() を使って配列として扱う(推奨)

最も効率の良い対処方法です。

@() を付けることで、結果が1件でも0件でも必ず「配列」として扱えるため、エラー防止になります。


✔ 方法3:?.(Null 条件演算子)を使う

PowerShell 7 以降なら Null 安全演算子が使えます。

→ null の場合もエラーにならず、結果は空になります。


◆ 再発防止ポイント

  • 外部コマンドの結果は必ず null になる可能性がある前提で書く

  • 返り値は @() で配列化すると安全

  • PowerShell 7 以上なら ?. 演算子を活用する

特に @() パターンはスクリプト全体の安定度が大きく向上いたします。


◆ まとめ

項目内容
エラー原因null の配列に対してインデックス指定でアクセスしたため
よくある原因検索結果・API結果・条件分岐ミス
対処方法$null チェック、配列強制 (@())、Null 条件演算子(?.)

PowerShell の配列は柔軟ですが、null が混ざると突然エラーになる場合があります。
今回の対処パターンを覚えていただくことで、より安定したスクリプト設計が可能になります。

Ads by Google