Netz-Weise Logo

Weisheiten - der Netz-Weise Blog

Hier finden Sie Tipps und Tricks für vor, während und nach der Schulung.
1 Minuten Lesezeit (281 Worte)

eine sortierte Hashtable (Dictionary) als Powershell Parameter übergeben

Eine Hashtable ist eine Schlüssel-Wertepaar-Liste zum Speichern von Konfigurationsinformationen. Solche Schlüssel-Wertepaare findet man überall, z.B. in ini-Dateien zur Konfiguration von Anwendungen. Die Windows Systemregistrierung ist nichts weiter als eine sehr große ini-Datei.

Hashtable werden in Powershell genau wie eine ini-Datei erstellt, allerdings in geschweifte Klammern eingeschlossen und mit einem @ eingeführt:

$Daten=[ordered]@{
   Pfad='C:\Windows'
   SvcUser='netz-weise\SqlSvc'
   Password='geheim'
}

Eine Hash-Table ist immer unsortiert, die Rückgabe erfolgt also in zufälliger Reihenfolge. Seit Powershell 3 kann man aber auch eine sortierte Hashtable erstellen, indem man [ordered] in der Defintion vor die Hash-Table schreibt:

$Daten=[ordered]@{
   Pfad='C:\Windows'
   SvcUser='netz-weise\SqlSvc'
   Password='geheim'
}

Wenn man so eine Hash-Table jetzt aber an einen Parameterblock übergibt und den Datentyp [Hashtable] erzwingen möchte, erhält man wieder eine unsortierte Hash-Table, da es sich bei einer sortierten Hashtable um einen eigenen Datentyp handelt und Powershell eine automatische Konvertierung durchführt.

$Daten=[ordered]@{
   Pfad='C:\Windows'
   SvcUser='netz-weise\SqlSvc'
   Password='geheim'
}
FunctionTest-Hash
{
    param(
        [Hashtable]$Daten 
   
)
    $Daten
}
Test-Hash-Daten $Daten

Das Problem besteht darin, dass eine sortierte und eine unsortierte Hashtable zwei unterschiedliche Datentypen sind. Geben Sie stattdessen [System.Collections.Specialized.OrderedDictionary] statt [Hashtable] als Datentyp an, funktioniert alles wie geschmiert. Die Funktion sieht dann so aus:

FunctionTest-Hash
{
    param(
        [System.Collections.Specialized.OrderedDictionary]$Daten 
   
)
    $Daten
}
Default Shell in Server Core auf Powershell ändern
Windows Update Troubleshooting

Ähnliche Beiträge

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Sonntag, 19. Mai 2024

Sicherheitscode (Captcha)