PowerShell HelpFile - about_hash_tables
 記事記号:[me1538] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    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 では、ハッシュ テーブルの構文は次のとおりです。
 
          @{  = ; [ =  ] ...}

      ハッシュ テーブルを作成する場合は、次のガイドラインに従ってください。

          - ハッシュ テーブルは記号 (@) で始めます。

          - ハッシュ テーブルは中かっこ ({}) で囲みます。

          - ハッシュ テーブルの内容として、1 つ以上の名前と値のペアを入力します。

          - 名前と値は等号 (=) で区切ります。

          - 名前/値ペアを区切るには、セミコロン (;) を使用します。

          - 名前または値にスペースが含まれる場合は、名前または値を引用符で囲みま
            す。

      たとえば、前のユーザー メッセージのハッシュ テーブルは次のとおりです。

          @{
          Msg1="Please enter your password.";
          Msg2="The path parameter is required."; Msg3="The alias of 
          Get-Command is gcm."; }

      スクリプトおよびコマンドでハッシュ テーブルを使用するには、ハッシュ テーブ
      ルを変数に保存します。変数の値はハッシュ テーブル オブジェクト (System.Col
      lections.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-st
      ring をハッシュ テーブルに変換します。 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
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_hash_tables
ご利用数: 1976888
感想・要望・問い合わせは こちら