我有一个PowerShell脚本中,我做了以下深复制一个PSObject
$somePSObjectHashtables = New-Object Hashtable[] $somePSObject.Length;
$somePSObjects = Import-CSV $csvPath
0..($somePSObject.Length - 1) | ForEach-Object {
$i = $_;
$somePSObjectHashtables[$i] = @{};
$somePSObject[$_].PSObject.Properties | ForEach-Object {
$somePSObjectHashtables[$i][$_.Name] = $_.Value;
}
}
我需要做的,因为我想在该CSV数据的几个不同的副本来执行几个不同的操作。从某种意义上说,我在PSObject的结果数组上执行“INNER JOIN”。我可以通过$somePSObjectHashtables
与ForEach-Object容易迭代并且阵列的每个成员上调用Hashtable.Clone()。然后我可以使用New-Object PSObject -Property $someHashTable[$i]
来获得PSObject的深层副本。
我的问题是,是否有使深层副本的一些更简单的方法,而不需要中间的Hashtable?
这可能是我怎么会已经结束了解决这样的问题。 – 2012-02-09 03:07:31
只是为了确保条款。 'Hashtable.Clone()'做浅拷贝。我们是否在谈论深层复制? – 2012-02-09 06:55:53
那么,在这个特殊的情况下,当数据来自CSV,将在事实上*深,因为性能或者是值类型(深拷贝,确实)或字符串(不深复制,但它们是不可变的,所以我们可能会考虑他们*深拷贝*在这个意义上)。 – 2012-02-09 07:03:16