对Hashtable进行排序并将其分配给Powershell中的新变量

nab*_*rid 1 powershell powershell-2.0

我想知道如何使用以下命令将已排序的hasttable分配给新变量.我使用以下命令

$ht =   @{ 
           1 = "Data1"; 
           3 = "Data3"; 
           2 = "Data2"; 
         }

$htSorted = $ht.GetEnumerator() | Sort-Object Name
Run Code Online (Sandbox Code Playgroud)

但是在运行之后我无法遍历生成的哈希表

foreach($key in $htSorted.Keys)
{
     $item[$key]
}
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

ste*_*tej 5

如果您需要有一个已排序的哈希表,您可以使用SortedDictionary.例:

$s = New-Object 'System.Collections.Generic.SortedDictionary[int, string]'
1..20 | % { 
  $i = (Get-Random -Minimum 0 -Maximum 100)
  write-host $i
  $s[$i] = $i.ToString() 
}
$s
Run Code Online (Sandbox Code Playgroud)

我创建了20个随机值并将它们存储在字典中.然后当PowerShell通过字典(via GetEnumerator())时,值按键排序.

它可能比使用旧的哈希表和排序快得多Sort-Object.