我试图创建一个现有数组的完整副本。每次我尝试这个时,它似乎都不起作用。问题是,我正在修改新复制阵列中的对象名称,但它们在原始阵列中也发生了更改。PowerShell完全复制一个阵列
下面的代码是高度简化的,因为还有很多事情发生,只有重命名对象名字,但它证明了我的观点。
一些示例代码:
Function Get-Fruits {
Param (
$Fruits = @('Banana', 'Apple', 'Pear')
)
foreach ($F in $Fruits) {
[PSCustomObject]@{
Type = $F
}
}
}
$FruitsOriginal = Get-Fruits
Function Rename-ObjectName {
# Copy the array here
$FruitsNew = $FruitsOriginal # Not a true copy
$FruitsNew = $FruitsOriginal | % {$_} # Not a true copy
$FruitsNew = $FruitsOriginal.Clone() # Not a true copy
$FruitsNew | Get-Member | ? MemberType -EQ NoteProperty | % {
$Name = $_.Name
$FruitsNew | % {
$_ | Add-Member 'Tasty fruits' -NotePropertyValue $_.$Name
$_.PSObject.Properties.Remove($Name)
}
}
}
Rename-ObjectName
期望的结果是2个完全分离的阵列。
$ FruitsOriginal
Type
----
Banana
Apple
Pear
$ FruitsNew
Tasty fruits
------------
Banana
Apple
Pear
谢谢您的帮助。
嘿DarkLite ......是你有一个美味的新鲜_peer_最后一次是什么时候? – Matt
在我的案例中,脚本专家和水果中的'字符串'使得演示代码更容易,哈哈。但如果我必须诚实,我更像香蕉粉丝。希望你当选,我投给你:) – DarkLite1
你可能会让我与别人混淆,因为我不在奔跑(或者我?)。另外我试图指出,同伴拼写错误 – Matt