私のスクリプトの 1 つで、カスタム オブジェクトを 1 つの配列に格納し、オブジェクトのプロパティを変更すると、すべての変更が配列にも反映されることに気付きました。
オブジェクトを値で保存する簡単な方法はありますか?
値を保存するたびに新しいオブジェクトを再作成することを避けたいです。
例:
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