トピック about_Hash_Tables 簡易説明 Windows PowerShell でのハッシュ テーブルの作成、使用、および並べ替えの方法について説明します。 詳細説明 ハッシュ テーブルとは、ディクショナリまたは連想配列とも呼ばれ、1 つ以上の名前/値ペアを保存 するコンパクトなデータ構造のことです。たとえば、ハッシュ テーブルには、一連の名前と従業員 ID、コンピューター名と IP アドレス、またはメッセージ ID とメッセージ テキストを格納するこ とができます。 ハッシュ テーブルは、データの検索および取得において非常に効率が良いため、よく使用されます。 ハッシュ テーブルを使用すると、Windows PowerShell で一覧の保存および集計プロパティの作成がで きます。また、Windows PowerShell は、文字列をハッシュ テーブルに変換する ConvertFrom- StringData というコマンドレットを備えています。 ハッシュ テーブルの作成 ハッシュ テーブルでは、項目は次のように名前/値ペアとして並べられています。 Msg1="Please enter your password." Msg2="The path parameter is required."Msg3="The alias of Get-Command is gcm." 値は名前にマッピングされている、つまり関連付けられているため、名前を渡すと、値が返されます。 Windows PowerShell では、ハッシュ テーブルの構文は次のとおりです。 @{ <name> = <value>; [<name> = <value> ] ...} ハッシュ テーブルを作成する場合は、次のガイドラインに従ってください。 - ハッシュ テーブルは記号 (@) で始めます。 - ハッシュ テーブルは中かっこ ({}) で囲みます。 - ハッシュ テーブルの内容として、1 つ以上の名前と値のペアを入力します。 - 名前と値は等号 (=) で区切ります。 - 名前/値ペアを区切るには、セミコロン (;) を使用します。 - 名前または値にスペースが含まれる場合は、名前または値を引用符で囲みます。 たとえば、前のユーザー メッセージのハッシュ テーブルは次のとおりです。 @{ Msg1="Please enter your password."; Msg2="The path parameter is required."; Msg3="The alias of Get-Command is gcm."; } スクリプトおよびコマンドでハッシュ テーブルを使用するには、ハッシュ テーブルを変数に保存 します。変数の値はハッシュ テーブル オブジェクト (System.Collections.Hashtable) で、名前/値ペアの各名前はハッシュ テーブル オブジェクトのプロパティです。 次のコマンドでは、ユーザー/メッセージのハッシュ テーブルを $a 変数に保存し、ドット メソ ッドを使用して値を表示します。 C:\PS> $a = @{ >> Msg1="Please enter your password."; >> Msg2="The path parameter is required."; >> Msg3="The alias of Get-Command is gcm."; >> } C:\PS> $a Name Value ---- ----- Msg1 Please enter your password. Msg3 The alias of Get-Command is gcm. Msg2 The path parameter is required. C:\PS> $a.Msg1 Please enter your password. ハッシュ テーブルは、1 つの型のデータには制限されません。ハッシュ テーブルにはどのような データ型でも入力でき、1 つのハッシュ テーブルでデータ型を組み合わせることができます。たと えば、整数、コマンドレットの呼び出し、および文字列を含むハッシュ テーブルを作成することが できます。 ハッシュ テーブルの並べ替え ハッシュ テーブルをキーまたは値のアルファベット順で並べ替えるには、ハッシュ テーブルの GetEnumerator メソッドを使用してハッシュ テーブルのキーおよび値を取得し、Sort-Object コマン ドレットを使用してキーおよび値を並べ替えます。 たとえば、次のコマンドでは、$a 内のハッシュ テーブルはキーのアルファベット順に並べ替えら れます。 C:\PS> $a.getenumerator() | sort-object -property key Name Value ---- ----- Msg1 Please enter your password. Msg2 The path parameter is required. Msg3 The alias of Get-Command is gcm. 次のコマンドでは、同じメソッドを使用してハッシュ値を降順に並べ替えます。 C:\PS> $a.getenumerator() | sort-object -property value -descending Name Value ---- ----- Msg2 The path parameter is required. Msg3 The alias of Get-Command is gcm. Msg1 Please enter your password. ConvertFrom-StringData ConvertFrom-StringData コマンドレットは、名前/値ペアの文字列または here-string をハッシ ュ テーブルに変換します。 ConvertFrom-StringData コマンドレットは、スクリプトのデータ セクションで安全に使用でき、このコマンドレットと Import-LocalizedData コマンドレット を共に使用すると、現在のユーザーのユーザー インターフェイス (UI) カルチャにユーザー メッ セージを表示できます。 here-string は、ハッシュ テーブルの値が引用符を含んでいるときに非常に便利です (here- string の詳細については、「about_Quoting_Rules」を参照してください)。 次の例は、前の例のユーザー メッセージの here-string を作成する方法、および ConvertFrom-StringData を使用してこれを文字列からハッシュ テーブルに変換する方法を示 しています。 次のコマンドは、名前/値ペアの here-string を作成し、これを $string 変数に保存します。 C:\PS> $string = @" Msg1="Please enter your password." Msg2="The path parameter is required." Msg3="The alias of Get-Command is gcm." "@ このコマンドは、ConvertFrom-StringData コマンドレットを使用して、here-string をハッシュ テーブルに変換します。 C:\PS> convertfrom-stringdata $string Name Value ---- ----- Msg3 "The alias of Get-Command is gcm." Msg2 "The path parameter is required." Msg1 "Please enter your password." 関連項目 about_Arrays about_Quoting_Rules about_Script_Internationalization ConvertFrom-StringData Import-LocalizedData