在我的一個腳本中,我注意到當我將自定義對象存儲在一個數組中時,然後如果我修改對象屬性,則也會在數組中進行所有更改。在Powershell中,如何通過「value」而不是「reference」將數組中的對象存儲在數組中?
有沒有簡單的方法來存儲對象的價值?
我想避免重新創建一個新的對象,每次我想存儲它的值。
實施例:
PS D:\wamp\www> $obj = New-Module -ScriptBlock { $var1="value1"; Export-ModuleMember -Variable * } -AsCustomObject
PS D:\wamp\www> $arr = @()
PS D:\wamp\www> $arr += $obj
PS D:\wamp\www> $arr
var1
----
value1
PS D:\wamp\www> $obj.var1 = "newvalue"
PS D:\wamp\www> $arr += $obj
PS D:\wamp\www> $arr
var1
----
newvalue
newvalue
PS D:\wamp\www> $obj2 = $obj.Psobject.Copy()
PS D:\wamp\www> $obj2.var1 = "other"
PS D:\wamp\www> $arr += $obj2
PS D:\wamp\www> $arr
var1
----
other
other
的可能重複[如何創建PSObject對象的新的克隆實例(http://stackoverflow.com/questions/9581568/how-to-create-new-clone-instance-of-psobject-object ) –
謝謝,我從這個主題中選擇了一個解決方案! – plunkets