PowerShell: 連想配列を結合(連結)する

PowerShellで連想配列(ハッシュテーブル)を結合する場合は、 +演算子や+=演算子を使用します。 +演算子は単純な結合、+=演算子は結合+代入です。 それぞれの方法を解説していきます。

+演算子での連想配列の結合

+演算子では、+演算子の左辺の連想配列と右辺の連想配列を結合し、 新たな連想配列を作成します。「連想配列+連想配列」の形式です。 注意点として、キーが重複しているとエラーになります。

次のコードでは、$h1と$h2の2つの連想配列を結合して、 新たな連想配列$h3を作成しています。

$h1 = @{
	a = 100
	b = 200
}

$h2 = @{c = 300; d = 400}

$h3 = $h1 + $h2

$h3

# 実行結果
Name         Value
----         -----
b            200
a            100
d            400
c            300

次のコードのように連想配列リテラルで記述しても構いません。

$h3 = @{a = 100} + @{c = 300}

$h3

# 実行結果
Name         Value
----         -----
a            100
c            300

キーの重複はエラー

次のコードでは連想配列のキー"a"が重複しているため、 エラーが発生します。

$h1 = @{a = 100; b = 200}

$h2 = @{c = 300; a = 400}

$h3 = $h1 + $h2

$h3

# 実行結果(エラーメッセージ)
Line |
   6 |  $h3 = $h1 + $h2
     |  ~~~~~~~~~~~~~~~
     | Item has already been added. 
       Key in dictionary: 'a'  Key being added: 'a'

+=演算子での連想配列の結合+代入

+=演算子は左辺と右辺の連想配列を結合し、 結果を左辺の連想配列に代入します。
「$h1 += $h2」は「$h1 = $h1 + $h2」と同じ意味です。

$h1 = @{a = 100; b = 200}

$h2 = @{c = 300; d = 400}

$h1 += $h2

$h1

# 実行結果
Name         Value
----         -----
b            200
a            100
d            400
c            300
PowerShell