Vor kurzem stand ich vor der Problematik bei einem PowerShell Skript beliebige unbekannte Kommandozeilenparameter auswerten zu wollte, bei denen es sich um Key=Value Paare handelte, also eigentlich ideal für eine Hashtabelle, jedoch handelt es sich bei der PowerShell Kommandozeilenparameter $Args Variable immer um einen String. Somit war ich auf der Suche wie man diese Key=Value Paare des Strings in einen Hashtabelle gewandelt bekommen. Dies ist einfach möglich mittels dem ConvertFrom-StringData Cmdlet, hier das passende Beispiel:
# Beispiel $args String der mittels Semikolon getrennt ist und Key=Values paare beinhaltet
$args = "LicenseKey=12345-67890-ABCDEF;AddLocal=All;User=Andreas"
# Konvertierung zur Hashtabelle
$hash = ConvertFrom-StringData -StringData $args.replace(';',"`n")
# Abfrage des Hashtabelle Inhaltes (als proof)
$hash.GetEnumerator() | foreach{ write-host "$($_.name)=$($_.value)" }