PowerShellには配列と似たような機能として、ハッシュテーブル(連想配列)というものがある。機能として、一つ以上の値をまとめて格納して扱うことができる変数だが、配列は各要素を取り出す際にインデックス(0から始まる連番)で指定するのに対して、ハッシュテーブルではキーと呼ばれるキーワードを用いる。キーワードはKeysプロパティで取得でき、その対となる値はValuesプロパティで取得できる。要素を取り出す際に、存在しないキーを指定すると何も返らないことに注意。以下、作成と操作例。
PS > $umamusume = @{rice = "石見舞菜香"; doto = "和多田美咲"}
PS > $umamusume
Name Value
---- -----
doto 和多田美咲
rice 石見舞菜香
PS > $umamusume["rice"]
石見舞菜香
PS > $umamusume["rise"]
PS > $umamusume.Keys
doto
rice
PS > $umamusume.Values
和多田美咲
石見舞菜香
要素を追加するにはAddプロパティを、削除するにはRemoveプロパティを使う。
PS > $umamusume.Add("creek", "優木かな")
PS > $umamusume
Name Value
---- -----
creek 優木かな
doto 和多田美咲
rice 石見舞菜香
PS > $umamusume.Remove("doto")
PS > $umamusume
Name Value
---- -----
creek 優木かな
rice 石見舞菜香
ハッシュテーブルの型とメンバは以下のとおり。
PS > $umamusume.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Hashtable System.Object
PS > $umamusume["rice"].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
PS > Get-Member -InputObject $umamusume
TypeName: System.Collections.Hashtable
Name MemberType Definition
---- ---------- ----------
Add Method void Add(System.Object key, System.O...
Clear Method void Clear(), void IDictionary.Clear()
Clone Method System.Object Clone(), System.Object...
(表示省略)
Keys Property System.Collections.ICollection Keys ...
SyncRoot Property System.Object SyncRoot {get;}
Values Property System.Collections.ICollection Value...