保持哈希表顺序



脚本如下:

$data= @{
    A = 1
    C = 2
    B = 3
}
foreach($key in $data.Keys){
    $item = $data[$key]
    Write-Host "$($key) : $($item)"
}

输出为:

C : 2
B : 3
A : 1

可以看到,输出的顺序与输入的顺序不同。

有什么方法可以保持我字典中的顺序吗?

我的实际需求是按照字典中提供的的顺序执行一组命令

作为旁注,我可以使用:

$data= @(
  @{ Name="A"; Value=1  }
  @{ Name="C"; Value=2  }
  @{ Name="B"; Value=3  }
)
foreach($item in $data){
    Write-Host "$($item.Name) : $($item.Value)"
}

但是语法有点复杂

需要PowerShell 3,但您可以使用[ordered]加速器来保持有序

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

最新更新