PowerShell: 連想配列の作成・初期化

連想配列はハッシュテーブルとも呼ばれ、 「キー」と「値」のペアを持つ特殊な配列です。 キーは一意である(重複しない)必要があり、 キーを使って高速な検索ができるのが特徴です。

PowerShellで連想配列を作成・初期化するには 次のように @ アットマーク、{} 波括弧、= イコールを使って記述します。

書式
$連想配列名 = @{
	キー1 = 値
	キー2 = 値
	...
}

全体を@{}で括り、キーと値は「 = イコール」でつなぎます

具体的に、下のテーブルのキーと値を持つ連想配列を作成・初期化してみます。

キー
a100
b200
c300
# ハッシュテーブル
$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

PowerShell