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
({{pro_count}})
Beitrag bewerten:{{percentage}} % positiv
({{con_count}})