У меня есть два набора файла json: Параметры1. json и Параметры2. json, как показано ниже:
Параметры1. json
{
"TypeofService":"CITService",
"ServiceName":"abc",
"SCNNAME":"abc_V1.scn",
"ScheduleInterval":"Daily",
"ScheduleDay":"MON,TUE,WED,THU,FRI,SAT",
"ScheduleTime":"08:30",
"Folder_structure": "Success\\test1,Success\\test2",
"CIT_Properties": [
{
"isPassword": false,
"Property": "host1",
"Value": "xyz"
},
{
"isPassword": false,
"Property": "Port1",
"Value": "8081"
},
{
"isPassword": false,
"Property": "user1",
"Value": "testuser"
},
{
"isPassword": true,
"Property": "password1",
"Value": "12345"
}
]
}
Параметры2. json (файл должен быть обновлен)
{
"TypeofService":"CITService",
"ServiceName":"abc",
"SCNNAME":"abc_V2.scn",
"ScheduleInterval":"Daily",
"ScheduleDay":"MON,TUE,WED,THU,FRI,SAT",
"ScheduleTime":"08:30",
"Folder_structure": "Success\\test1,Success\\test2",
"CIT_Properties": [
{
"isPassword": false,
"Property": "host1",
"Value": "xyz"
},
{
"isPassword": false,
"Property": "port1",
"Value": "8080"
},
{
"isPassword": false,
"Property": "user1",
"Value": "generic"
},
{
"isPassword": true,
"Property": "password1",
"Value": "56789"
},
{
"isPassword": false,
"Property": "host2",
"Value": "xyz2"
},
{
"isPassword": false,
"Property": "port2",
"Value": "8080"
},
{
"isPassword": false,
"Property": "user2",
"Value": "user2"
},
{
"isPassword": true,
"Property": "password2",
"Value": "1234567890"
}
]
}
Я пытаюсь добиться того, чтобы в случае совпадения «Property» в CIT_Properties в обоих файлах соответствовало значение CIT_properties.value из параметров1. json должно быть обновлено в параметрах 2. json.
т.е. если вы видите выше: порт1, пользователь1 и пароль1 являются общими в обоих файлах. Я хотел бы, чтобы значения (8080, generi c, 56789 в параметрах 2. json) были заменены на (8081, testuser, 12345).
То, что я сделал до сих пор, приведено ниже:
$json1 = (Get-Content "C:\Users\parameters1.json" -Raw) | Out-String | ConvertFrom-Json
$json2=(Get-Content "C:\Users\parameters2.json" -Raw) | Out-String | ConvertFrom-Json
for ($a = 0; $a -lt $json2.PsObject.properties.value.Property.length; $a++)
{
for ($b = 0; $b -lt $json1.PsObject.properties.value.Property.length; $b++)
{
if ($json2.PsObject.properties.value.Property[$a] -eq $json1.PsObject.properties.value.Property[$b])
{
$json2.PsObject.properties.value.Value[$a]= $json1.PsObject.properties.value.Value[$b]
}
}
}
Я вижу, что могу получить доступ к отдельным значениям, но когда я пытаюсь установить их, выдается ошибка.