You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中PSObject.Copy()复制JSON对象后的修改差异求助

问题原因解释

PSObject.Copy()执行的是浅拷贝,这就是你看到两种不同结果的核心原因:

  • 删除顶级variables属性仅影响$B:浅拷贝会为新对象$B创建一个独立的顶级属性集合,修改$B的顶级属性(比如删除)只会作用于$B自身,不会影响原对象$A的顶级属性集合。
  • 删除$B.Variables.osProfile9会同步修改$A:浅拷贝不会递归复制嵌套的子对象,$B.Variables实际上是对$A.Variables这个子对象的引用——两者指向内存中的同一个对象。所以你对$B.Variables下属性的修改,本质是在操作和$A共享的那个子对象,自然会在$A中体现出来。

补充说明:ConvertFrom-Json生成的是PSCustomObject类型,PSObject.Copy()对该类型的处理逻辑就是浅拷贝。如果需要创建完全独立的深拷贝(包括所有嵌套对象),可以用以下方法:

  • 借助JSON序列化/反序列化:
    $B = $A | ConvertTo-Json -Depth 100 | ConvertFrom-Json
    
    注意要指定足够大的-Depth值,避免嵌套层级被截断。

内容的提问来源于stack exchange,提问作者sdo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:52:37