PowerShell: 連想配列の作成・初期化
連想配列はハッシュテーブルとも呼ばれ、 「キー」と「値」のペアを持つ特殊な配列です。 キーは一意である(重複しない)必要があり、 キーを使って高速な検索ができるのが特徴です。
PowerShellで連想配列を作成・初期化するには 次のように @ アットマーク、{} 波括弧、= イコールを使って記述します。
書式
$連想配列名 = @{ キー1 = 値 キー2 = 値 ... }
全体を@{}で括り、キーと値は「 = イコール」でつなぎます
具体的に、下のテーブルのキーと値を持つ連想配列を作成・初期化してみます。
キー | 値 |
---|---|
a | 100 |
b | 200 |
c | 300 |
# ハッシュテーブル $h = @{ a = 100 b = 200 c = 300 } $h # 実行結果 Name Value ---- ----- b 200 a 100 c 300
上の実行結果はキーが b, a, cの順番に表示されています。 このように連想配列ではキーの格納順番は不定です。 作成時に記述した順番(a, b, cの順)に格納されているとは限りません。
要素(キーと値)の数が少なくて、短い場合は、 次のように1行で書くこともできます。 その場合要素間は ; セミコロンが必要です。
$h = @{a = 100; b = 200; c = 300}
連想配列作成時の注意点
1. 連想配列を作成する時は {} 波括弧を使って@{}と記述します。 配列を作成する時は () 丸括弧を使って@() と書くので、 連想配列と配列でカッコを間違えないようにしてください。
2. 作成時に@を忘れると連想配列にはなりません。
エラーにもならずに、ただのスクリプトブロックとして認識されます。
次のコードではわざと@を忘れて記述しています。
変数$hをGetType()で調べると「ScriptBlock」になっています。
# @を忘れた場合 $h = {a = 100; b = 200; c = 300} $h # a = 100; b = 200; c = 300 $h.GetType() # ScriptBlock
空の連想配列を作成
空の連想配列を作成する場合は @{} と記述します。 まず空の連想配列を作成して、その後に初期化しても構いません。 上で作成した連想配列は次のように記述しても同じです。
# 空の連想配列を作成 $h = @{} $h.a = 100 $h.b = 200 $h.c = 300 $h # 実行結果 Name Value ---- ----- b 200 a 100 c 300
参考サイト
ハッシュテーブルについて知りたかったことのすべて - PowerShell | Microsoft Docs