Нужна помощь в разборе JSON с PowerShell - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть блок JSON, который я пытаюсь проанализировать с помощью PowerShell.JSON предназначен для обозначения разрешений, которые группа AD должна быть предоставлена ​​при регистрации приложения Azure.Приложению будет присвоено несколько групп, и каждая группа будет иметь уникальный набор ролей (разрешений).Полный файл JSON содержит несколько из этих application блоков.

По сути, я хочу иметь возможность использовать PowerShell для выполнения запроса application, запроса Azure AD, чтобы получить ресурс приложения, а затем изменитьресурс для назначения каждой группы приложению с его ролями, используя New-AzureADGroupAppRoleAssignment.

. Обычное мышление заключается в том, что мне нужен цикл, вложенный в цикл, вложенный в цикл, где первый цикл захватывает * 1008.* блок, затем второй цикл захватывает блок groupname, а затем третий цикл захватывает массив roles для этой группы.

 "application": 
  [
    {
      "groupname": "adgroup1",
      "roles": [ 
        "Permission1",
        "Permission2",
        "Permission3",
        "Permission4",
        "Permission5",    
        "Permission6" 
      ]
    },
    {
      "groupname": "adgroup2",
      "roles": [ 
        "Permission1",
        "Permission2",
        "Permission4",
        "Permission5",    
        "Permission6" 
      ]
    }

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Что-то вроде этого должно помочь вам начать

$json = SomethingThatGetsJson | ConvertFrom-Json
$json.application | % {
   $data = $_
   Write-Host $data.groupname
   $data.roles | % {
      $role = $_
      Write-Host $role
   }
}

% - сокращение от ForEach-Object, если вы хотите получить более подробную информацию об этом.$_ - значение элемента в текущей итерации перечисления.

0 голосов
/ 30 ноября 2018

До тех пор, пока возвращаемый JSON верен, вы должны использовать командлет ConvertFrom-Json. Он преобразует строку JSON в нужный объект, через который вы можете проходить точки, и запускает другие стандартные командлеты, например select, * 1003.*, foreach и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...