PowerShellの連想配列(Hash)

PowerShell

この記事は、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の連想配列の使い方について説明しました。

タイトルとURLをコピーしました