Freigeben über


about_Hash_Tables

THEMA
    about_Hash_Tables

KURZBESCHREIBUNG
    Beschreibt das Erstellen, Verwenden und Sortieren von 
    Hashtabellen in Windows PowerShell.


DETAILBESCHREIBUNG
    Eine Hashtabelle, auch als Wörterbuch oder assoziatives Array 
    bezeichnet, bildet eine kompakte Datenstruktur, in der ein oder 
    mehrere Name-Wert-Paare gespeichert werden. Eine Hashtabelle kann 
    beispielsweise eine Reihe von Namen und Mitarbeiter-IDs, 
    Computernamen und IP-Adressen oder Meldungs-IDs und 
    Meldungstexten enthalten.
 

    Hashtabellen werden häufig verwendet, da sie beim Suchen und 
    Abrufen von Daten sehr effizient sind. Sie können Hashtabellen 
    verwenden, um Listen zu speichern und berechnete Eigenschaften in 
    Windows PowerShell zu erstellen. Zudem verfügt Windows PowerShell 
    über das Cmdlet "ConvertFrom-StringData", mit dem Zeichenfolgen 
    in eine Hashtabelle konvertiert werden können.


  Erstellen von Hashtabellen
      Die Elemente in einer Hashtabelle werden in Name-Wert-Paaren 
      angeordnet, z. B.:


          Msg1="Geben Sie Ihr Kennwort ein."
          Msg2="Der Pfadparameter ist erforderlich." 
          Msg3="Der Alias von Get-Command ist gcm." 

      Die Werte werden den Namen zugeordnet, sodass Windows 
      PowerShell den Wert zurückgibt, wenn Sie den Namen übermittelt 
      haben.


      In Windows PowerShell wird für Hashtabellen die folgende Syntax 
      verwendet:

 
          @{ <Name> = <Wert>; [<Name> = <Wert> ] ...}


      Folgen Sie beim Erstellen einer Hashtabelle diesen Richtlinien:


          - Beginnen Sie die Hashtabelle mit dem at-Zeichen (@).

          - Schließen Sie die Hashtabelle in geschweifte Klammern 
            ({}) ein.

          - Geben Sie als Inhalt der Hashtabelle ein oder mehrere 
            Name-Wert-Paare ein.

          - Trennen Sie jeden Namen vom zugehörigen Wert durch ein 
            Gleichheitszeichen (=).

          - Trennen Sie die Name-Wert-Paare durch ein Semikolon (;).

          - Namen oder Werte mit Leerzeichen schließen Sie in 
            Anführungszeichen ein.


      Eine Hashtabelle der obigen Benutzermeldungen kann 
      beispielsweise wie folgt aussehen:


          @{
          Msg1="Geben Sie Ihr Kennwort ein.";
          Msg2="Der Pfadparameter ist erforderlich."; Msg3="Der Alias 
          von Get-Command ist gcm."; 
          }


      Wenn Sie in Skripts und Befehlen eine Hashtabelle verwenden möchten, 
      speichern Sie diese in einer Variablen. Der Wert der Variablen bildet 
      ein Hashtabellenobjekt (System.Collections.Hashtable), und jeder Name 
      in den Name-Wert-Paaren stellt eine Eigenschaft des Hashtabellenobjekts dar.


      Mit den folgenden Befehlen speichern Sie die Hashtabelle mit 
      Benutzermeldungen in der Variablen "$a" und zeigen die Werte mit der 
      DOT-Methode an. 


          C:\PS> $a = @{
          >> Msg1="Geben Sie Ihr Kennwort ein.";
          >> Msg2="Der Pfadparameter ist erforderlich.";
          >> Msg3="Der Alias von Get-Command ist gcm.";
          >> }



          C:\PS> $a
          Name                           Value
          ----                           -----
          Msg1                    Geben Sie Ihr Kennwort ein.
          Msg3                    Der Alias von Get-Command ist gcm.
          Msg2                    Der Pfadparameter ist erforderlich.

          C:\PS> $a.Msg1
          Geben Sie Ihr Kennwort ein.


      Hashtabellen sind auf keinen bestimmten Datentyp beschränkt. In 
      einer Hashtabelle können Sie jeden Datentyp eingeben, und Sie können 
      Datentypen in einer einzelnen Hashtabelle kombinieren. Beispielsweise 
      können Sie eine Hashtabelle erstellen, die eine ganze Zahl, den 
      Aufruf eines Cmdlets und eine Zeichenfolge enthält.


  Sortieren von Hashtabellen
      Wenn Sie die Hashtabelle alphabetisch nach Schlüsseln oder 
      Werten sortieren möchten, rufen Sie mit der GetEnumerator-Methode
      von Hashtabellen die Schlüssel und Werte in der Hashtabelle 
      ab, und sortieren Sie sie dann mit dem Cmdlet "Sort-Object".


      Zum Beispiel sortieren Sie die Hashtabelle in "$a" mit dem 
      folgenden Befehl alphabetisch nach Schlüsseln.


          C:\PS> $a.getenumerator() | sort-object -property key

          Name                           Value
          ----                           -----
          Msg1                           Geben Sie Ihr Kennwort ein.
          Msg2                           Der Pfadparameter ist erforderlich.
          Msg3                           Der Alias von Get-Command ist gcm.


      Mit dem folgenden Befehl sortieren Sie die Hashwerte mit 
      derselben Methode in absteigender Reihenfolge.


          C:\PS> $a.getenumerator() | sort-object -property value -descending

          Name                           Value
          ----                           -----
          Msg2                           Der Pfadparameter ist erforderlich.
          Msg3                           Der Alias von Get-Command ist gcm.
          Msg1                           Geben Sie Ihr Kennwort ein.



  ConvertFrom-StringData
      Mit dem Cmdlet "ConvertFrom-StringData" wird eine Zeichenfolge 
      oder here-Zeichenfolge von Name-Wert-Paaren in eine Hashtabelle 
      konvertiert. Das Cmdlet "ConvertFrom-StringData" können Sie im 
      Data-Abschnitt eines Skripts sicher verwenden, und Sie können 
      es mit dem Cmdlet "Import-LocalizedData" verwenden, um 
      Benutzermeldungen in der Benutzeroberflächenkultur des 
      aktuellen Benutzers anzuzeigen.


      Here-Zeichenfolgen sind besonders nützlich, wenn die Werte in der 
      Hashtabelle Anführungszeichen enthalten. (Weitere Informationen zu 
      here-Zeichenfolgen finden Sie unter "about_Quoting_Rules".


      Im folgenden Beispiel wird gezeigt, wie Sie eine here-Zeichenfol
      ge der Benutzermeldungen im obigen Beispiel erstellen und diese 
      mit ConvertFrom-StringData aus einer Zeichenfolge in eine 
      Hashtabelle konvertieren.


      Mit dem folgenden Befehl erstellen Sie eine here-Zeichenfolge 
      der Name-Wert-Paare und speichern diese dann in der Variablen 
      "$string".


          C:\PS> $string = @"
          Msg1="Geben Sie Ihr Kennwort ein."
          Msg2="Der Pfadparameter ist erforderlich." 
          Msg3="Der Alias von Get-Command ist gcm." 
          "@

   
    In diesem Befehl wird das Cmdlet "ConvertFrom-StringData" 
    verwendet, um die here-Zeichenfolge in eine Hashtabelle zu 
    konvertieren.


        C:\PS> convertfrom-stringdata $string

        Name                           Value
        ----                           -----
        Msg3                           "Der Alias von Get-Command ist gcm."
        Msg2                           "Der Pfadparameter ist erforderlich."
        Msg1                           "Geben Sie Ihr Kennwort ein."


SIEHE AUCH
    about_Arrays
    about_Quoting_Rules
    about_Script_Internationalization 
    ConvertFrom-StringData
    Import-LocalizedData