我希望使用PowerShell设置嵌套对象属性的值。当您尝试设置第一级属性的值时,它非常简单:
$propertyName = "someProperty"
$obj.$propertyName = "someValue" # ← It works
对于嵌套属性,它不起作用:
$propertyName = "someProperty.someNestedProperty"
$obj.$propertyName = "someValue" # ← It doesn't work and raises an error.
如何使用PowerShell通过属性名称设置嵌套对象属性的值?
MCVE
对于那些想要重现问题的人,这里是一个简单的示例:
$Obj= ConvertFrom-Json '{ "A": "x", "B": {"C": "y"} }'
# Or simply create the object:
# $Obj= @{ A = "x"; B = @{C = "y"} }
$Key = "B.C"
$Value = "Some Value"
$Obj.$Key = $Value
运行该命令,您将收到一个错误:
注意: 该代码支持任何层次的嵌套。"在此对象上找不到属性'B.C'。请验证该属性是否存在并且可以被设置。"
$json.$propertyName.$nestedPropertyName.
,因为它只能满足那一个用例。如果我没记错的话,需要使用递归函数。 - Matt$json.$propertyName.$nestedPropertyName
,但它不是基于属性名称的,并且不能满足在运行时按名称解析属性的要求。关于链接的帖子,它是Get,而我正在寻找Set。 - Reza Aghaei