gpt4 book ai didi

powershell - 将有序哈希表传递给脚本 block 会破坏顺序

转载 作者:行者123 更新时间:2023-12-02 18:07:43 24 4
gpt4 key购买 nike

我正在尝试以 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

要保留顺序,您可以使用以下任一选项:

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

或者

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

关于powershell - 将有序哈希表传递给脚本 block 会破坏顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47850732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com