保留哈希表顺序

时间:2016-11-03 12:54:02

标签: powershell

假设我有这个剧本:

$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)"
}

但语法有点复杂

1 个答案:

答案 0 :(得分:7)

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

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