トピック
    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




目次