Разбор массива JSON с помощью PowerShell - PullRequest
1 голос
/ 18 апреля 2020

У меня проблемы с возвратом указанных c данных из запроса API с помощью PowerShell. Я делаю простой вызов API, чтобы получить пользователя, который прекрасно работает.

$Response = Invoke-RestMethod -uri $uri -Method GET -Headers $Headers
$Response

Вызов возвращает следующее.

Total Sum   Users         Groups
----- ----- -----         ------
    1     1 @{123456789=} @{Test Users=System.Object[]; Global Users=System.Object[]...

$ Response.Users возвращает следующее

123456789
---------
@{name= Test Case; fullname=Test Tester Case; office=Area 51;....

Проблема в том, что число «123456789» является уникальным идентификатором, который изменяется с каждым пользователем. Чтобы получить необходимые данные от каждого пользователя, мне нужно иметь возможность анализировать и захватывать только это число.

Вот вывод JSON из $ Response.Users

{
    "123456789": {
      "name": "Test Case",
      "fullname": "Tester Test Case",
      "office": "Area 51",
      "country": "United States",
      "groups": [
        "Test Users",
        "Global Users",
        "Test OU"     
      ]
    }
}

Любая помощь с благодарностью!

Спасибо

1 Ответ

2 голосов
/ 19 апреля 2020

Вы можете получить доступ к имени свойства заметки , используя свойство powershell по умолчанию PsObject и получить его имя:

$json = 
@'
{
    "123456789": {
      "name": "Test Case",
      "fullname": "Tester Test Case",
      "office": "Area 51",
      "country": "United States",
      "groups": [
        "Test Users",
        "Global Users",
        "Test OU"     
      ]
    }
}
'@


$json | ConvertFrom-Json | ForEach-Object {$_.PsObject.Properties.Name}

Или в вашем случае:

$Response.Users | ConvertFrom-Json | ForEach-Object {$_.PsObject.Properties.Name}

Должен сделать трюк; -)

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