この記事は、PowerShellの連想配列(Hash)の使用方法について説明します。
連想配列の作成
連想配列(Hash)により、キーワードで配列の要素にアクセスできます。
連想配列では、配列の要素にアクセスするときに、インデックスに加えて、キーワードと要素を対応付けます。
Powershellの連想配列の形式
連想配列(ハッシュテーブル)の定義は @{}
を使います。 宣言時に定義する場合、要素は 要素名=値
で記述し、要素はセミコロン区切りにします。
$連想配列名 = @{キーワード1=要素1;キーワード2=要素2;…}
連想配列の要素へのアクセスの形式
連想配列名.キーワード または 連想配列名["キーワード"]
連想配列の例
PS> $hash = @{x = 1; y = 2; z = 3}
連想配列のアクセス
連想配列へのアクセスの例
PS> $hash["x"] 1
使用されているキーワードを表示する例
PS> $hash.Keys y z x
使用されている値を表示する例
PS> $hash.Values 2 3 1
連想配列Hashtableクラスのメンバー
PS> Get-Member -InputObject $hash TypeName: System.Collections.Hashtable Name MemberType Definition ---- ---------- ---------- Add Method void Add(System.Object key, System.Object value), void IDictionary.Add(Syste... Clear Method void Clear(), void IDictionary.Clear() Clone Method System.Object Clone(), System.Object ICloneable.Clone() Contains Method bool Contains(System.Object key), bool IDictionary.Contains(System.Object key) ContainsKey Method bool ContainsKey(System.Object key) ContainsValue Method bool ContainsValue(System.Object value) CopyTo Method void CopyTo(array array, int arrayIndex), void ICollection.CopyTo(array arra... Equals Method bool Equals(System.Object obj) GetEnumerator Method System.Collections.IDictionaryEnumerator GetEnumerator(), System.Collections... GetHashCode Method int GetHashCode() GetObjectData Method void GetObjectData(System.Runtime.Serialization.SerializationInfo info, Syst... GetType Method type GetType() OnDeserialization Method void OnDeserialization(System.Object sender), void IDeserializationCallback.... Remove Method void Remove(System.Object key), void IDictionary.Remove(System.Object key) ToString Method string ToString() Item ParameterizedProperty System.Object Item(System.Object key) {get;set;} Count Property int Count {get;} IsFixedSize Property bool IsFixedSize {get;} IsReadOnly Property bool IsReadOnly {get;} IsSynchronized Property bool IsSynchronized {get;} Keys Property System.Collections.ICollection Keys {get;} SyncRoot Property System.Object SyncRoot {get;} Values Property System.Collections.ICollection Values {get;}
.Net Frameworkでは、Hash TableクラスのAdd()メソッドは要素の追加、Remove()メソッドは要素の削除です。
要素の追加
連想配列に要素を追加する例
PS> $hash.Add("a",-1) PS> $hash.a -1
要素の削除
連想配列から要素を削除する例
PS> $hash.Remove("x") PS> $hash.Keys y a z
順序付き連想配列
連想配列で Keys や Values で取得する順番を、連想配列に格納した順番にたい場合は、定義時に [ordered]
をつけます。
PS> $hashOrder = [ordered]@{} PS> $hashOrder["1番目"] = 100 PS> $hashOrder["2番目"] = 200 PS> $hashOrder["3番目"] = 300 PS> $hashOrder.Keys 1番目 2番目 3番目 PS> $hashOrder.Values 100 200 300
まとめ
今回はPowerShellの連想配列の使い方について説明しました。