我试图以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
答案 0 :(得分:1)
使用[ordered]
属性定义哈希表时,实际上会创建System.Collections.Specialized.OrderedDictionary
。
将参考文件传递给HashTable
类型的参数时,它会将OrderedDictionary
转换为HashTable
,而不再订购。
要保留订单,您可以使用以下任一选项:
OrderedDictionary
。或
System.Collections.Specialized.OrderedDictionary
类型。