Ich habe ein Problem beim Sortieren einer Hashtabelle. Ich habe meinen Code auf das Nötigste heruntergebrochen, um niemanden mit meinem ursprünglichen Skript zu überlisten.Sortieren Sie eine PowerShell-Hashtabelle für eine Eigenschaft mit dem Wert
Write-Host "PowerShell Version = " ([string]$psversiontable.psversion)
$h = @{}
$Value = @{SortOrder=1;v1=1;}
$h.Add(1, $Value)
$Value = @{SortOrder=2;v1=1;}
$h.Add(2, $Value)
$Value = @{SortOrder=3;v1=1;}
$h.Add(3, $Value)
$Value = @{SortOrder=4;v1=1;}
$h.Add(4, $Value)
Write-Host "Ascending"
foreach($f in $h.GetEnumerator() | Sort-Object Value.SortOrder)
{
Write-Host $f.Value.SortOrder
}
Write-Host "Descending"
foreach($f in $h.GetEnumerator() | Sort-Object Value.SortOrder -descending)
{
Write-Host $f.Value.SortOrder
}
Der Ausgang ist
PowerShell Version = 3.0
Ascending
2
1
4
3
Descending
2
1
4
3
Ich bin sicher, dies ist nur ein einfacher Fall nicht die richtige Verwendung von Sort-Object
zu kennen. Die Sortierung funktioniert korrekt auf Sort-Object Name
, also hat es vielleicht etwas damit zu tun, dass man nicht mit der Value.SortOrder
umgehen kann?
Ich habe meine Frage aktualisiert, um den Code zu verwenden, den Sie erwähnten, aber ich bekomme immer noch die gleiche Ausgabe. –
greymind sieht aus wie ich den Zeitraum verpasst habe. Ich bearbeite die Frage wieder auf das Original. –
BTW das kann separate Frage sein, aber es gibt einen einfachen Weg zu> = 2 oder einem anderen Filter. –