Beim ersten Mal auf Hashtabellen stoßen, könnte man sich fragen, was sie sind und welche entscheidende Rolle sie in Skripten oder Befehlen spielen. Keine Sorge! Dieses Tutorial hilft Ihnen dabei, mit PowerShell-Hashtabellen zu beginnen.
Kurz gesagt ermöglichen Hashtabellen das Speichern und Manipulieren von Daten mithilfe von Schlüssel-Wert-Paaren, die schnell und effizient abgerufen werden können. In diesem Tutorial lernen Sie die Grundlagen von Hashtabellen und wie Sie sie in Ihren PowerShell-Skripten und Befehlen verwenden können.
Lesen Sie weiter und erweitern Sie Ihre Fähigkeiten mit PowerShell-Hashtabellen!
Voraussetzungen
Dieses Tutorial wird in einer praktischen Demonstration durchgeführt. Stellen Sie sicher, dass Sie ein System mit installiertem und konfiguriertem PowerShell v5+ haben, um mitzumachen. Dieses Tutorial verwendet Windows 10 mit PowerShell 7, aber andere Versionen von PowerShell und Windows werden ebenfalls funktionieren.
Erstellen einer PowerShell-Hashtabelle
Das Abrufen bestimmter Daten kann sich irgendwann in eine „Nadel im Heuhaufen“-Situation verwandeln. Mit Hashtabellen können Sie jedoch schnell nach bestimmten Elementen in einer umfangreichen Datensammlung suchen.
In PowerShell sind Hashtabellen flexible Datenstrukturen, die auf vielfältige Weise verwendet werden, z. B. zum Speichern von Konfigurationsdaten, zum Übergeben von Argumenten an Cmdlets und zum Speichern von Daten in einem Skript.
Um zu sehen, wie eine PowerShell-Hashtabelle funktioniert, müssen Sie zuerst eine erstellen, wie folgt:
1. Öffnen Sie eine PowerShell-Sitzung und führen Sie den folgenden Befehl aus, der keine Ausgabe erzeugt, sondern eine Variable namens name
deklariert, um auf eine leere Hashtable zu verweisen.
Wie Sie unten sehen können, werden Hashtables in PowerShell ähnlich wie Arrays definiert, indem das @
-Symbol verwendet wird.
2. Führen Sie als nächstes den unten stehenden Befehl aus, um den Typ der Variablen name
zu überprüfen (GetType()
).
Der Typ der Variablen name
ist Hashtable, wie unten gezeigt. Diese Information bestätigt, dass Ihre Hashtable erfolgreich erstellt wurde.

3. Nachdem Sie Ihre Hashtable überprüft haben, führen Sie den folgenden Code aus, um zu überprüfen, ob die Hashtable leer ist oder nicht.
Der folgende Code bestimmt, ob die Count
-Eigenschaft gleich (-eq
) 0
ist, und gibt eine entsprechende Nachricht aus.
Unten sehen Sie, dass die Hashtable leer ist, da Sie sie gerade erstellt haben, und es keine Schlüssel-Wert-Paare darin definiert sind.

Hinzufügen von Elementen zu einer PowerShell-Hashtable
Sie haben gerade eine praktisch leere PowerShell-Hashtable erstellt, die nur nützlich sein kann, wenn Sie Elemente hinzufügen. Wie? Indem Sie Schlüssel-Wert-Paare zur Hashtable hinzufügen.
Ähnlich wie bei einem Array verwendet eine PowerShell-Hashtable statt Ganzzahlen als Indizes Schlüssel (die jeden Datentyp haben können), um die Werte zu identifizieren. Diese Funktion ermöglicht ein schnelles Einfügen, Abrufen und Löschen von Elementen aus der Hashtable, da der Schlüssel den entsprechenden Wert schnell lokalisiert.
Im Folgenden finden Sie die Syntax zum Hinzufügen eines Schlüssel-Wert-Paares zu einer PowerShell-Hashtable, wobei:
$hashtable
– Der Name der Hashtable.$key
– Der Name des Schlüssels, der unempfindlich gegen Groß- und Kleinschreibung ist. Zum Beispiel würden „Vorname“ und „vorname“ als derselbe Schlüssel in einer Hashtable betrachtet werden$value
– Der Wert, der mit dem Schlüssel assoziiert werden soll.
Führen Sie den folgenden Code aus, der keine Ausgabe auf der Konsole erzeugt, sondern Schlüssel-Wert-Paare deklariert und fügen Sie sie Ihrer Hashtable ($name
) hinzu.
In einer Hashtable ermöglicht es der Schlüssel, eine Hashfunktion auszuführen, die den Schlüssel einer bestimmten Position in der internen Datenstruktur der Hashtable zuordnet.
? Hashtable-Werte können jeden Typ haben, wie Zahlen, Zeichenfolgen, Arrays, Objekte und andere Datentypen als Werte in einer Hashtable.
Führe nun den unten stehenden Code erneut aus, um zu überprüfen, ob dein Hashtable leer ist.
Wie unten gezeigt, erhältst du eine Meldung, dass das Hashtable dieses Mal nicht leer ist.

Abrufen von Elementen aus einem PowerShell-Hashtable
Angenommen, du bist zuversichtlich, dass dein Hashtable nicht leer ist. Wie erfährst du, welche Elemente in deinem Hashtable existieren? Glücklicherweise kannst du auch Elemente aus deinem Hashtable abrufen.
Führe den unten stehenden Code aus, um alle Elemente aus deinem Hashtable in Schlüssel-Wert-Paaren zu erhalten und auszugeben (Write-Output
), jeweils eins pro Zeile.`

Führe nun den unten stehenden Code aus, um alle Elemente in einem Hashtable abzurufen und auf die Konsole auszugeben.
? Beachten Sie, dass Sie im Laufe dieses Tutorials häufig den folgenden Code verwenden werden. Sie können das mehrfache Kopieren und Einfügen desselben Codes vermeiden, indem Sie eine Funktion erstellen, aber das fällt nicht in den Rahmen dieses Tutorials.
Dieses Mal können Sie Hinweise darauf sehen, welche Schlüssel und Werte unter den aufgelisteten Elementen sind.

Hashtabellen mit vordefinierten Werten erstellen
Bisher haben Sie nur leere Hashtabellen erstellt. Aber wenn Sie wissen, dass bestimmte Werte immer in Ihrer Hashtabelle benötigt werden, können Sie eine mit vordefinierten Werten erstellen.
Hashtabellen mit vordefinierten Werten können Ihnen Zeit sparen und Ihren Code effizienter machen, da Sie die Werte später nicht zur Hashtabelle hinzufügen müssen.
? Bedenken Sie, dass das Erstellen von Hashtabellen keine Ausgabe erzeugt. Aber keine Sorge. In diesem Tutorial werden Sie jede Hashtabelle nach der Erstellung überprüfen.
1. Führen Sie den folgenden Befehl aus, um eine Hashtabelle ($hashtable1
) mit drei Schlüssel-Wert-Paaren zu erstellen.
2. Führen Sie anschließend den folgenden Code aus, um zu überprüfen, ob die neue Hashtabelle (hashtable1
) existiert.
Sie werden feststellen, dass die Werte für jedes Schlüssel-Wert-Paar wie erwartet auf dem Bildschirm angezeigt werden. Diese Ausgabe bestätigt, dass die vordefinierten Werte an den entsprechenden Stellen im Hashtable gespeichert sind.

3. Führen Sie nun den folgenden Code aus, um einen Hashtable ($hashtable2
) mit vordefinierten Werten mithilfe einer Schleife (oder eines Arrays) zu erstellen.
4. Führen Sie schließlich den unten stehenden Code aus, um zu überprüfen, ob der neue Hashtable (hashtable2
) erfolgreich erstellt wurde.
Die unten stehende Ausgabe bestätigt, dass die Schleifenmethode funktioniert, wenn ein Hashtable mit vordefinierten Werten erstellt wird. Da die Elemente jedoch zufällig aufgelistet sind, springen Sie zum nächsten Abschnitt für eine Lösung.

Erstellen einer geordneten Liste von Elementen in Hashtables
Standardmäßig werden die Elemente in einem Hashtable in keiner bestimmten Reihenfolge gespeichert. Aber was ist, wenn Sie eine geordnete Liste benötigen? Sie können auch eine geordnete Liste von Elementen in Ihren Hashtables erstellen, um Daten in einer bestimmten Reihenfolge anzuordnen.
Um eine geordnete Liste von Elementen in Ihrem Hashtable zu erstellen, verwenden Sie das [ordered]
-Attribut wie folgt:
1. Führen Sie den folgenden Code aus, um eine geordnete Liste von Elementen in einer Hashtable (`$hashtable3`) zu erstellen.
2. Führen Sie anschließend den folgenden Code aus, um zu überprüfen, ob die geordnete Liste von Hashtables erfolgreich erstellt wurde.
Wie unten gezeigt, bleiben die aufgelisteten Elemente in der Reihenfolge, die Sie beim Erstellen der Hashtable definiert haben.
Einige mögliche Vorteile der Verwendung einer geordneten Hashtable sind unter anderem:
Benefits | Description |
Easier to read and debug | The elements are displayed in a predictable order, which can be especially useful if you work with many elements of a large hashtable. |
Improved performance | An ordered hashtable can be more efficient when accessing elements frequently in a specific order. |

3. Rufen Sie schließlich Ihre geordnete Hashtable (`$hashtable3`) auf, um weiter zu bestätigen, dass Sie eine geordnete Liste von Elementen erhalten.
Die untenstehende Ausgabe bestätigt, dass Sie unabhängig davon, wie Sie auf Ihre Hashtable zugreifen, weiterhin eine geordnete Liste von Elementen erhalten.

Aktualisieren vorhandener Elemente in Hashtables
Daten ändern sich ständig und wenn Sie vorhandene Hashtables haben, ist deren Aktualisierung eine wichtige Aufgabe. Angenommen, Sie verwenden eine Hashtable, um Konfigurationswerte zu speichern. In diesem Fall müssen Sie möglicherweise den Wert eines Schlüssels aktualisieren, wenn sich die Konfiguration ändert.
Um eine PowerShell-Hashtable zu aktualisieren, verwendet der Zuweisungsoperator `=` wie folgt:
1. Führen Sie den folgenden Befehl aus, der keine Ausgabe liefert, aber den Wert des Schlüssels `Key2` in `$hashtable3` auf `NewValue2` aktualisiert.
Führen Sie als Nächstes den folgenden Befehl aus, um eine neue Schlüssel-Wert-Paar (Key4 = NewValue4
) zum Hashtable ($hashtable3
) hinzuzufügen.
Das Hinzufügen eines neuen Schlüssel-Wert-Paars erzeugt keine Ausgabe wie das Aktualisieren vorhandener Listen in Hashtables, aber Sie werden die Änderungen im nächsten Schritt überprüfen.
3. Führen Sie den folgenden Code aus, um zu überprüfen, ob die Werte der Schlüssel in Ihrer Hashtable ($hashtable3
) aktualisiert wurden.

? In PowerShell muss jeder Schlüssel in einer Hashtable eindeutig sein. Wenn Sie versuchen, ein Schlüssel-Wert-Paar hinzuzufügen, das bereits in der Hashtable vorhanden ist, erhalten Sie einen Fehler wie den untenstehenden. Um diesen Fehler zu vermeiden, gehen Sie zum nächsten Schritt über.

4. Führen Sie nun den folgenden Code aus, der die Methode Contains()
verwendet, um zu überprüfen, ob der Schlüssel, den Sie hinzufügen möchten, bereits in der Hashtable vorhanden ist, bevor Sie das Schlüssel-Wert-Paar hinzufügen.
Wenn der neue Schlüssel nicht existiert, erhalten Sie die folgende Meldung, in der steht, dass der neue Schlüssel zur Hashtable hinzugefügt wurde.

Andernfalls erhalten Sie eine Nachricht, wenn der Schlüssel, den Sie bereits versuchen, bereits vorhanden ist.

5. Führen Sie abschließend den folgenden Code erneut aus, um alle Elemente in Ihrer Hashtable ($hashtable3
) abzurufen.
Unten sehen Sie den neu hinzugefügten Schlüssel (Key5) und andere Elemente, die Sie bisher zur Hashtable hinzugefügt haben.

Entfernen von Elementen aus einer Hashtable
Zu viele Elemente in einer Hashtable, insbesondere unnötige, können nur zu Verwirrung führen. Durch das Entfernen von Elementen, die nicht mehr relevant oder benötigt sind, wird Ihnen ein Gefallen getan.
Angenommen, Ihre Hashtable enthält eine Liste von Benutzern und deren Informationen. Wenn ja, entfernen Sie Benutzer aus Ihrer Hashtable, wenn sie nicht mehr aktiv sind.
Führen Sie den folgenden Code aus, um ein bestimmtes Element (Key1
) aus Ihrer Hashtable ($hashtable3
) zu entfernen.
Unten wird die Ausgabe angezeigt, die besagt, dass der Schlüssel entfernt wurde. Wenn der Schlüssel jedoch nicht vorhanden ist, erhalten Sie eine Meldung, dass der Schlüssel nicht gefunden wurde.

Führen Sie nun den folgenden Code aus, um alle Elemente in Ihrer Hashtable zu überprüfen und zu überprüfen, ob die Elementlöschung erfolgreich war.
Nachfolgend können Sie überprüfen, dass das Schlüssel-Wert-Paar mit dem Schlüssel „Key5“ nicht mehr in Ihrer Hashtabelle vorhanden ist.

Schlussfolgerung
Mit einer Schlüssel-Wert-Paar-Struktur und schnellem Zugriff ist eine PowerShell-Hashtabelle gut geeignet, um große Datenmengen in verschiedenen Szenarien zu verwalten. Und in diesem Tutorial haben Sie gelernt, wie Sie Elemente zu Hashtabellen hinzufügen, aktualisieren und entfernen können. All das verleiht Ihnen die Fähigkeiten, Hashtabellen effektiv in Ihren Skripten zu verwenden.
Warum nutzen Sie Ihre neu erworbenen Fähigkeiten nicht auf die nächste Stufe? Erwägen Sie, Hashtabellen in Ihre Skripte für fortgeschrittenere Aufgaben wie Datenmanipulation und Transformation zu integrieren. Oder experimentieren Sie mit Kombinationen von Hashtabellen mit anderen Datenstrukturen in PowerShell, wie Arrays und Objekte, um komplexere Probleme zu lösen?