После открытия файла .json в PowerShell у меня появился новый объект PSObject с именем $ json_sitesandsnets. В конечном итоге я хочу пройти через каждый сайт (Орландо, Денвер), пройти через каждую из их подсетей и сделать что-нибудь. Первоначально мне нужно создать эти подсети для соответствующего сайта в Active Directory с помощью командлета New-ADReplicationSubnet. Я уже использовал это для создания единой подсети, но у меня есть гораздо больший список сайтов и подсетей, с которыми я буду работать. Этот пример представляет собой лишь небольшую урезанную версию, которую можно опубликовать здесь. Как только я выясню, как получить доступ к этим подсетям в объектах Value, я мог бы просто передать каждый список подсетей в New-ADReplicationSubnet. Но я действительно хочу иметь возможность перебирать каждую подсеть для других целей. Я думаю, что это, наверное, несложно сделать, если вы знаете, как это делать.
Вот необработанный json:
{
"Orlando": [
"10.10.10.0/24",
"10.10.20.0/24",
"10.10.30.0/24",
"10.10.40.0/24"
],
"Denver": [
"10.0.70.0/24",
"10.0.80.0/24",
"10.0.90.0/24",
"10.0.100.0/24",
"10.0.110.0/24",
"10.0.120.0/24"
]
}
И я получаю такие свойства PSObject:
$ json_sitesandsnets.psobject.properties
Когда я запускаю Debug в VSCode, я вижу объект PSObject и список (массив) подсетей: видя это в отладке
Вот код, который без проблем получает имя (Write-Host $ site.Name). Как видите, я пробовал несколько разных способов доступа к этим подсетям, которые являются Ценностью каждого сайта. И я просто не могу этого понять. Я прочитал так много статей и обсуждений на форумах о циклическом прохождении через PSObject, но, похоже, просто не могу найти золотого ответа на доступ и прохождение через массив, который является Value of the PSObject. Я чувствую, что я действительно близок.
foreach ($site in $json_sitesandsnets.PSObject.Properties) {
Write-Host $site.Name
$site| get-member -type NoteProperty | foreach-object {
$subnet = $site."$($_.Value)"
Write-Host $subnet
Write-Host $_.Value
}
}