PowerShellのハッシュテーブルの扱い方

こんにちは。
けいぞうです。

今回はPowerShellのハッシュテーブル(連想配列)の扱い方についての記事です。

[目次]

ハッシュテーブルの作り方

ハッシュテーブルとは「キー」と「」がセットになった配列のようなものです。

●PowerShellでハッシュテーブルを作るには以下のように書きます

$ht = @{ Name = "keizou"; Age = 5 ; Height = 80 }

キーと値のセットの区切りは「;」または改行で区切ることができます。

$ht = @{ 
Name = "keizou"
Age = 5
Height = 80
}

$htの中を見てみると、こんな風になっています。

> $ht

Name                           Value
----                           -----
Name                           keizou
Age                            5
Height                         80

ハッシュテーブルに要素を足す方法

普通の配列では「固定サイズ」になっていて要素を単純に足すことができませんでした。

ハッシュテーブルが固定サイズになっているかどうか確認してみます。

> $ht.IsFixedSize
False

「IsFixedSize」がFalseになっているので、可変サイズです。

つまり、自由に要素の追加と削除ができます。

ハッシュテーブルに要素を追加するには以下のように書きます

> $ht["Langage"] = "Japanese"
> $ht

Name                           Value
----                           -----
Name                           keizou
Age                            5
Height                         80
Langage                        Japanese

ハッシュテーブルとハッシュテーブルを結合することもできます。

> $ht1 = @{ "a" = "えー"; "b" = "ビー" }
> $ht2 = @{ "c" = "しー"; "d" = "でー" }
> $ht3 = $ht1 + $ht2
> $ht3

Name                           Value
----                           -----
d                              でー
a                              えー
c                              しー
b                              ビー

ハッシュテーブルから要素を削除する方法

●ハッシュテーブルから要素を削除するにはRemoveメソッドを使います●

> $ht

Name                           Value
----                           -----
Name                           keizou
Age                            5
Height                         80
Langage                        Japanese


> $ht.Remove("Age")
> $ht

Name                           Value
----                           -----
Name                           keizou
Height                         80
Langage                        Japanese

ハッシュテーブルの要素を抽出する方法

●ハッシュテーブルから要素を抽出するには以下のように書きます●

> $ht["Name"]
keizou
> $ht["Age"]
> $ht["Height"]
80
> $ht["Langage"]
Japanese

上のように[]内にキーを指定して値を取り出します。

キーが存在しない場合は、$nullが返ってきます。


また、ハッシュテーブルのキーの一覧や値の一覧を表示したい場合は以下のように書きます

> $ht.Keys
Name
Height
Langage
> $ht.Values
keizou
80
Japanese