PowerShell: 連想配列の「要素の参照」と「値の代入」

PowerShellの連想配列(ハッシュテーブル)で、 要素値の参照と値を代入する方法を解説します。

連想配列の各要素は「キー」と「値」のペアとなっており、 PowerShellで連想配列のキーを指定する方法は次の3通りあります。

書式
$連想配列名.キー

$連想配列名[キー]

$連想配列名.Item(キー)

上の3つのいずれの方法でも構いません。 2番目の方法は [] 角括弧、3番目の方法は () 丸括弧と 括弧の種類が違うので注意が必要です。 ここでは最もシンプルな1番目の . ドットを使った 「$連想配列名.キー」の方法を主に使います。

参照

連想配列の要素の値を参照する場合は、 次のように参照したいキーを指定するだけです。 キー a は3通りの方法で参照しています。

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

# a を参照
Write-Host $h.a          # 100
Write-Host $h["a"]       # 100
Write-Host $h.Item("a")  # 100

# b を参照
Write-Host $h.b          # 200

存在しないキーを指定した場合、エラーではなく「Null」になります。
次のコードでは存在しないキー「z」を指定し、 その参照値がNullかどうかを比較演算子を使って判定しています。

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

Write-Host $h.a  # 100
Write-Host $h.z  # 何も表示されない

# Null判定
if ($h.z -eq $null){
	Write-Host "Nullです"
} else {
	Write-Host "Nullではありません"
}

# 実行結果
100

Nullです

代入

連想配列に値を代入する場合、 代入演算子を使って「$連想配列名.キー = 値」と記述します。

次のコードではキー「a」に500を代入しています。

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

# 代入
$h.a = 500

Write-Host $h.a  # 500

存在しないキーを指定して値を代入した場合、 エラーではなく新しい「キー・値」のペアが追加されます。

次のコードでは存在しないキー「z」を指定して値を代入した結果、 連想配列のペア(キー・値)が追加されていることが確認できます。

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

$h.z = 400

$h

# 実行結果
Name         Value
----         -----
z            400
b            200
a            100
PowerShell