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...