v5.1
Учитывая следующее json -> obj from convertfrom- json
$json = @"
{
"key1":"value1",
"key2":"value2",
"key3":[
"value3a","value3b","value3c"
],
"key4":[
{
"id":"id1",
"name":"name1"
},
{
"id":"id2",
"name":"name2"
}
]
}
"@
$obj = ConvertFrom-Json -InputObject $json
Я добавляю новый элемент в массив key4, где коллекция является идентификатором = "id1" без каких-либо проблем, например
$rootKey = "key4"
$subKeyValue = "id1"
$newKey = "foo"
$newValue = "bar"
# declare the target collection to modify
$targetCollection=($obj.$rootKey.where{$_.id -eq $subKeyValue})
# if the property/member does not exist create it in the target collection
if (!($targetCollection.$($newKey))) {
$targetCollection | Add-Member @{$newKey = $newValue}
}
Проблема возникает, когда я пытаюсь обновить этот же ключ в той же коллекции новым значением, очевидно, делая это неправильно, но я ожидал, что это сработает
$newValue = 'bar2'
$targetCollection.$newKey = $newValue # = ERROR: The property 'foo' cannot be found on this object
$targetCollection.foo = $newValue # = ERROR: The property 'foo' cannot be found on this object
$targetCollection | get-Member
Get-Member четко показывает NoteProperty 'foo', но, похоже, что-то не так с моим таргетингом или методом, который я использую.