2016-11-03 4 views
2

Sagen wir, ich habe dieses Skript:Erhaltung hashtable Ordnung

$data= @{ 
    A = 1 
    C = 2 
    B = 3 
} 

foreach($key in $data.Keys){ 
    $item = $data[$key] 
    Write-Host "$($key) : $($item)" 
} 

Die Ausgabe lautet:

C : 2 
B : 3 
A : 1 

Wie Sie sehen können, ist die Ausgabe in einer anderen Reihenfolge, dass die Eingabe.

Gibt es eine Möglichkeit, die Reihenfolge in meinem Wörterbuch zu erhalten?

Meine eigentliche Anforderung ist es, eine Reihe von Befehl in der Reihenfolge in einem Wörterbuch zur Verfügung gestellt.

Als Randbemerkung, kann ich umgehen mit:

$data= @(
    @{ Name="A"; Value=1 } 
    @{ Name="C"; Value=2 } 
    @{ Name="B"; Value=3 } 
) 

foreach($item in $data){ 
    Write-Host "$($item.Name) : $($item.Value)" 
} 

aber die Syntax ist etwas komplexe

Antwort

5

Benötigt Powershell-3, aber Sie können die [ordered] Beschleuniger verwenden, um Dinge in Ordnung zu halten.

$data= [ordered]@{ 
    A = 1 
    C = 2 
    B = 3 
} 
+0

Genau das, was ich gesucht habe. Vielen Dank. –