如何在PowerShell中简洁地添加/更新JSON中的键?
解决方法
直接用Add-Member的-Force参数就能实现单次调用完成添加/更新操作:
$settings | Add-Member -Name 'foo' -Type NoteProperty -Value 42 -Force
原理说明
-Force参数是核心:
- 若
foo属性不存在,它会创建这个NoteProperty并赋值42; - 若
foo属性已存在,它会直接覆盖原有值为42。
完全匹配你的需求——不管该键此前是否存在,操作后都能确保它带着指定值存在。
补充:简化属性存在性检查(若需自定义逻辑)
如果仍想自己封装逻辑,检查属性是否存在可以用更直观的写法:
if ('foo' -in $settings.PSObject.Properties.Name) { $settings.foo = 42 } else { $settings | Add-Member -Name 'foo' -Type NoteProperty -Value 42 }
不过显然Add-Member -Force的写法更简洁高效。
内容的提问来源于stack exchange,提问作者F-H
相关产品推荐
相关产品推荐

