将Ordered哈希表传递给脚本块会破坏顺序

时间:2017-12-16 23:03:49

标签: powershell csv

我试图以CSV字符串的形式从远程主机收集一些信息。我需要按特定顺序返回值,以便将它们累积在一个CSV文件中。

我使用有序哈希表来按特定顺序保存密钥,但是当我将密钥传递给远程主机时,命令就会被破坏。

有没有办法保留订单?

$ordered_hash = [ordered]@{"a" = 1; "b" = 2; "c" = 3}
$ordered_hash
$scriptblock = {
param ($hash)
$hash
} 
Invoke-Command -ComputerName localhost -ScriptBlock $scriptblock -ArgumentList ([hashtable]$ordered_hash)

返回:

Name                           Value                                                                                                                                     
----                           -----                                                                                                                                     
a                              1                                                                                                                                         
b                              2                                                                                                                                         
c                              3                                                                                                                                         
c                              3                                                                                                                                         
b                              2                                                                                                                                         
a                              1                                                                                                                                         

1 个答案:

答案 0 :(得分:1)

使用[ordered]属性定义哈希表时,实际上会创建System.Collections.Specialized.OrderedDictionary

将参考文件传递给HashTable类型的参数时,它会将OrderedDictionary转换为HashTable,而不再订购。

要保留订单,您可以使用以下任一选项:

  • 从脚本块的参数中删除类型以防止类型更改。这样它将使用使用OrderedDictionary
  • 的原始类型

  • 使用脚本块参数的System.Collections.Specialized.OrderedDictionary类型。