我正试图以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
使用[ordered]
属性定义哈希表时,实际上它会创建一个System.Collections.Specialized.OrderedDictionary
。
当它传递给HashTable
类型的参数时,它将OrderedDictionary
转换为HashTable
,它不再是有序的。
要保留订单,您可以使用以下任一选项:
OrderedDictionary
的原始类型。要么
System.Collections.Specialized.OrderedDictionary
类型。