PowerShell中如何复制/克隆AWS Route53的ResourceRecordSet对象?
关于AWS PowerShell中Route53对象克隆的问题
我在使用AWS PowerShell Tools操作Amazon.Route53.Model.ResourceRecordSet和Amazon.Route53.Model.ResourceRecord类型对象时遇到了麻烦。
需求是从AWS Route53获取资源记录集,修改其资源记录列表后重新提交。之前直接获取并修改单个ResourceRecordSet对象是可行的,但这次希望保留原对象不变,创建副本修改。
一开始我尝试直接赋值:
$NewR53ResourceRecordSet = $CurrentR53ResourceRecordSet
结果发现这是引用类型赋值,修改新对象时原对象也会被改动。之后查资料说可以用.Clone()方法,但这两个类型并没有实现该方法。
最后只能用这种繁琐的方式手动复制:
$NewR53ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet $NewR53ResourceRecordSet.Name = $CurrentR53ResourceRecordSet.Name $NewR53ResourceRecordSet.Type = $CurrentR53ResourceRecordSet.Type $NewR53ResourceRecordSet.TTL = $CurrentR53ResourceRecordSet.TTL foreach ($CurrentR53ResourceRecord in $CurrentR53ResourceRecordSet.ResourceRecords) { $NewR53ResourceRecord = New-Object Amazon.Route53.Model.ResourceRecord $NewR53ResourceRecord.Value = $CurrentR53ResourceRecord.Value $NewR53ResourceRecordSet.ResourceRecords += $NewR53ResourceRecord }
为什么在PowerShell里完成这么简单的对象克隆操作会这么困难?我已经理解背后的原理,但还是搞不懂为什么没有更简便的解决方案。
内容的提问来源于stack exchange,提问作者Matthew McDonald
相关产品推荐
相关产品推荐

