我正在尝试创建现有数组的完整副本。每次我尝试这个似乎都不起作用。问题是我正在修改新复制的数组中的对象名称,但它们在原始数组中也发生了更改。
下面的代码高度简化,因为除了重命名对象名称之外还发生了很多事情,但它证明了我认为的观点。
一些示例代码:
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 个完全独立的数组。
$水果原味
Type
----
Banana
Apple
Pear
$水果新
Tasty fruits
------------
Banana
Apple
Pear
感谢您的帮助。
# Copy the array here
$FruitsCopy = @()
$FruitsCopy = $FruitsCopy + $FruitsOriginal
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)