PowerShell Hashtable

 

Wer zu einem Array auch bestimmte Werte speichern will, stößt mit Arrays an die Grenzen. Eine Hashtable ist ähnlich einem Array, speichert aber für jeden Eintrag einen Wert. (ähnlich dem vbscript: Dictionary)

Hashtable anlegen

In folgendem Beispiel lege ich eine Hastable mit einigen Einträgen und deren Werten an:

$hashtable = @{"Eintrag1" = "Wertvon1"; "Eintrag2" = "Wertvon2"; Eintrag3 = "Wertvon3"}

Ausgabe:

PS C:\Users\username> $hashtable = @{"Eintrag1" = "Wertvon1"; "Eintrag2" = "Wertvon2"; "Eintrag3" = "Wertvon3"}
PS C:\Users\username> $hashtable
Name Value
---- -----
Eintrag3 Wertvon3
Eintrag2 Wertvon2
Eintrag1 Wertvon1

zusätzliche Einträge

können mit folgendem Befehl hinzugefügt werden:

$hashtable.Add("zusätzlicher Eintrag", "noch ein Wert")

Ausgabe:

PS C:\Users\username> $hashtable.Add("zusätzlicher Eintrag", "noch ein Wert")
PS C:\Users\username> $hashtable

Name Value
---- -----
Eintrag3 Wertvon3
zusätzlicher Eintrag noch ein Wert
Eintrag2 Wertvon2
Eintrag1 Wertvon1

Einträge entfernen:

$hashtable.Remove("Eintrag2")

Ausgabe:

PS C:\Users\username> $hashtable.Remove("Eintrag2")
PS C:\Users\username> $hashtable

Name Value
---- -----
Eintrag3 Wertvon3
zusätzlicher Eintrag noch ein Wert
Eintrag1 Wertvon1

Einträge ändern:

$hashtable.Set_Item("Eintrag3", "Wert für Eintrag3 geändert")

Ausgabe:

PS C:\Users\username> $hashtable.Set_Item("Eintrag3", "Wert für Eintrag3 geändert")
PS C:\Users\username> $hashtable

Name Value
---- -----
Eintrag3 Wert für Eintrag3 geändert
zusätzlicher Eintrag noch ein Wert
Eintrag1 Wertvon1

Eintrag auslesen

$hashtable.Get_Item("Eintrag3")

Ausgabe

C:\Users\username> $hashtable.Get_Item("Eintrag3")
Wert für Eintrag3 geändert

Testen ob ein Eintrag vorhanden ist

$hashtable.ContainsKey("Eintrag3")

Ausgabe

PS C:\Users\username> $hashtable.ContainsKey("Eintrag3")True

Testen ob ein bestimmter Wert vorhanden ist

$hashtable.ContainsValue("Wert für Eintrag3 geändert")

 Ausgabe

PS C:\Users\username> $hashtable.ContainsValue("Wert für Eintrag3 geändert")
True

Hashtable als Object-Array:Pipe

Zur Weiterverwendung als Object-Array, z.B. um dieses über eine Pipe weiterzuverarbeiten wird Methode GetEnumerator benötigt

$hashtable.GetEnumerator() | Sort-Object Name

 Ausgabe

PS C:\Users\username> $hashtable.GetEnumerator() | Sort-Object Name

Name Value
---- -----
Eintrag1 Wertvon1
Eintrag3 Wert für Eintrag3 geändert
zusätzlicher Eintrag noch ein Wert
positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Fragen / Kommentare