Hash-Table
Eine Hash-Table (auch Dictionary genannt) enthält Schlüssel-Wertepaare, wie man sie z.B. in ini-Dateien oder der Registry findet. Ein Eintrag in einer Hash-Table besteht immer aus einem Schlüsselnamen und einem zugeordneten Wert.

Abbildung 1 - Schlüssel-Wertepaare bilden die Registry
Man kann Hash-Table mit einem Array vergleichen, bei dem die einzelnen Werte nicht anonym durchnummeriert sind, sondern jeder einzelne Wert einen Namen bekommt, auf den man referenzieren kann, ohne den Index kennen zu müssen. Die Erstellung einer Hash-Table erfolgt ähnlich wie Erstellung eines Arrays, aber mit geschweiften statt runden Klammern.
Wenn Sie einige oder alle Werte der Hash-Table schon im Vorfeld kennen, geht das Erstellen sehr einfach:
$Parameter = @{
LogName = 'Application' EntryType = 'Error','Warning'
After = '2018-03-01' # Jahr, Monat, Tag
}
Genau wie in einer Konfigurations-Datei legen Sie die einzelnen Paare untereinander an. In Powershell müssen Sie die Daten zusätzlich in geschweifte Klammern einschließen und wie bei einem Array ein @ davor schreiben. Sie können die Hash-Table dann auch einer Variablen zuweisen.
Wenn Sie erst einmal eine leere Hash-Tabelle erzeugen wollen, um später einzelne Werte hinzuzufügen, haben Sie zwei Möglichkeiten. Sie können die Add-Methode der Hash-Table verwenden oder mit der Array-Index-Schreibweise arbeiten.
$Konfiguration = @{}
# leere Hashtable erzeugen
$Konfiguration.Add('Path','C:\Program Files\SQLServer') # Per add() hinzufügen
$Konfiguration['SvcAcct'] = 'netz-weise\SqlSvc' # oder per Index
$Konfiguration # Die Hash-Table zurückgeben
> Name Value
> ---- -----
> Path C:\Program Files\SQLServer
> SvcAcct netz-weise\SqlSvc
Man sieht, dass zwei Spalten zurückgegeben werden: der Schlüsselnameund der zugewiesene Wert. Stellen Sie sich jetzt vor, Sie sind ein Programmierer und möchten gerne den Installationspfad abfragen. Dann geben Sie statt eines Index jetzt einfach den Namen des Wertes an, den Sie benötigen:
$Konfiguration.Path
# Enweder geben Sie den Pfad mit einem Punkt getrennt an
$Konfiguration["Path"] # Oder Sie geben den Namen wie einen Index an
Hash-Table sind zur Speicherung von Konfigurationsdaten hervorragend geeignet. Wir werden uns im Abschnitt Objekte ansehen, wie man über eine Hash-Table neue Objekte erzeugen kann. Außerdem kann man mit Hilfe einer Technik, die sich Splatting nennt seit Powershell 3 mit Hash-Tables die Übergabe von Parametern an ein Cmdlet übersichtlicher gestalten.