Powershell克隆有序哈希表

时间:2018-08-31 13:32:17

标签: powershell hashtable

跟踪this thread

问题

无法克隆有序哈希表。

问题

是否有一种“简便”的方法来做到这一点?我确实找到了一些示例,这些示例对于这样的“简单”任务来说似乎过于复杂。

MWE

$a = [ordered]@{}
$b = $a.Clone()

输出

Method invocation failed because [System.Collections.Specialized.OrderedDictionary] does not contain a method named 'Clone'.

3 个答案:

答案 0 :(得分:3)

OrderedDictionary不包含Clone方法(另请参见ICloneable接口)。您必须手动进行:

$ordered = [ordered]@{a=1;b=2;c=3;d=4}
$ordered2 = [ordered]@{}
foreach ($pair in $ordered.GetEnumerator()) { $ordered2[$pair.Key] = $pair.Value }

答案 1 :(得分:2)

尽管PawełDyl给出的答案确实克隆了有序哈希,但它不是Deep-Clone

为此,您需要执行以下操作:

as.owin.default

答案 2 :(得分:0)

如果您愿意丢失它的有序方面,一种快速的解决方案是将其转换为普通的哈希表并使用其Clone()方法。

$b=([hashtable]$a).Clone()