Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Redaktionelle Notiz
Wichtig
Die Windows PowerShell Language Specification 3.0 wurde im Dezember 2012 veröffentlicht und basiert auf Windows PowerShell 3.0. Diese Spezifikation spiegelt nicht den aktuellen Status von PowerShell wider. Es ist nicht geplant, diese Dokumentation zu aktualisieren, um den aktuellen Zustand widerzuspiegeln. Diese Dokumentation wird hier zur historischen Referenz vorgestellt.
Das Spezifikationsdokument ist im Microsoft Download Center als Microsoft Word-Dokument verfügbar unter: https://www.microsoft.com/download/details.aspx?id=36389. Dieses Word-Dokument wurde hier auf Microsoft Learn für die Präsentation umgewandelt. Während der Konvertierung wurden einige redaktionelle Änderungen vorgenommen, um die Formatierung für die Docs-Plattform zu berücksichtigen. Einige Tippfehler und kleinere Fehler wurden korrigiert.
Syntax:
Tipp
Die ~opt~ Notation in den Syntaxdefinitionen gibt an, dass die lexikalische Entität in der Syntax optional ist.
hash-literal-expression:
@{ new-lines~opt~ hash-literal-body~opt~ new-lines~opt~ }
hash-literal-body:
hash-entry
hash-literal-body statement-terminators hash-entry
hash-entry:
key-expression = new-lines~opt~ statement
key-expression:
simple-name
unary-expression
statement-terminator:
;
new-line-character
10.1 Einführung
Der Typ „Hashtabelle“ bildet eine Sammlung von Schlüssel-Wert-Paarobjekten ab, die das effiziente Abrufen eines Werts unterstützen, wenn sie vom Schlüssel indiziert sind. Jedes Schlüssel-Wert-Paar ist ein Element, das in einem implementierungsdefinierten Objekttyp gespeichert wird.
Der Schlüssel eines Elements darf nicht der Nullwert sein. Es gibt keine Einschränkungen für den Typ eines Schlüssels oder Werts. Doppelte Schlüssel werden nicht unterstützt.
Bei einem Schlüssel-Wert-Paar-Objekt können der Schlüssel und der zugeordnete Wert jeweils mithilfe der Instanzeigenschaften „Key“ bzw. „Value“ abgerufen werden.
Bei einem oder mehr Schlüsseln kann über den Hashtabellenindexoperator [] (§7.1.4.3) auf den entsprechenden Wert bzw. die entsprechenden Werte zugegriffen werden.
Alle Hashtables haben typ Hashtable (§4.3.3).
Die Reihenfolge der Schlüssel in der Sammlung, die von Keys zurückgegeben wird, ist nicht angegeben; sie entspricht jedoch der Reihenfolge der zugehörigen Werte in der Sammlung, die von Values zurückgegeben werden.
Hier sind einige Beispiele für Hashtables:
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.FirstName # designates the key FirstName
$h1["LastName"] # designates the associated value for key LastName
$h1.Keys # gets the collection of keys
Hashtable-Elemente werden in einem Objekt vom Typ DictionaryEntry gespeichert, und die von „Keys“ und „Values“ zurückgegebenen Sammlungen weisen den Typ ICollection auf.
10.2 Hashtabelle-Erstellung
Eine Hashtable wird über ein Hashliteral (§7.1.9) oder das New-Object-Cmdlet erstellt. Sie kann mit null oder mehr Elementen erstellt werden. Die Eigenschaft „Count“ gibt die Anzahl der aktuellen Elemente zurück.
10.3 Hinzufügen und Entfernen von Hashtable-Elementen
Ein Element kann einer Hashtable hinzugefügt werden, indem ein Wert (§7.11.1) einem nicht vorhandenen Schlüsselnamen oder einem Index (§7.1.4.3) zugewiesen wird, der einen nicht vorhandenen Schlüsselnamen verwendet. Das Entfernen eines Elements erfordert die Verwendung der Remove-Methode. Beispiel:
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.Dept = "Finance" # adds element Finance
$h1["Salaried"] = $false # adds element Salaried
$h1.Remove("Salaried") # removes element Salaried
10.4 Hashtabellen-Verkettung
Hashtabellen können über die Operatoren + und += verkettet werden, die beide zur Erstellung einer neuen Hashtable führen. Die vorhandenen Hashtables sind unverändert. Weitere Informationen finden Sie unter §7.7.4.
10.5 Hashtables als Referenztypen
Da Hashtable ein Verweistyp ist, gehört zur Zuweisung einer Hashtable eine flache Kopie, d.h. die zugewiesene Variable bezieht sich auf dieselbe Hashtable. Es wird keine Kopie der Hashtable erstellt. Beispiel:
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h2 = $h1
$h1.FirstName = "John" # change key's value in $h1
$h2.FirstName # change is reflected in $h2
10.6 Aufzählen mit einer Hashtabelle
Damit Sie jedes Paar in einer Hashtable verarbeiten können, verwenden Sie die Keys-Eigenschaft, um die Liste der Schlüssel als Array abzurufen. Zählen Sie dann wie folgt mit den Elementen dieses Arrays auf, um den zugeordneten Wert mithilfe der Value-Eigenschaft oder einem Index abzurufen:
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123}
foreach ($e in $h1.Keys) {
"Key is " + $e + ", Value is " + $h1[$e]
}