PowerShell克隆对象


在上一个例子中我们演示了PowerShell通过引用(内存地址)来存储对象。如果你想创建一个副本,必须手动复制对象的每一个属性。

下面我们再来看一个例子:

$object1 = @{Name='Weltner'; ID=12 }
$object2 = @{Name='Frank'; ID=99 }

$a = $object1, $object2

# 通过序列化和反序列化深层拷贝对象:
$b = $a | ConvertTo-Json -Depth 99 | ConvertFrom-Json

$b[0].Name = 'changed'
$b[0].Name
$a[0].Name

有一点需要留意,反序列化后对象的类型发生了变化:

PS C:\> $a[0].GetType().FullName
System.Collections.Hashtable
PS C:\> $b[0].GetType().FullName
System.Management.Automation.PSCustomObject
PS C:\>

原文链接:cloning object

本文链接: https://www.pstips.net/cloning-object.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注