我試圖創建一個現有數組的完整副本。每次我嘗試這個時,它似乎都不起作用。問題是,我正在修改新複製陣列中的對象名稱,但它們在原始陣列中也發生了更改。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