FreshAgent Получить данные об активах - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь получить данные об активах из клиента Fre sh с помощью Powershell. Я могу получить любой актив, набрав его имя, но я хочу сохранить некоторые из переменных, которые он возвращает, чтобы я мог использовать его дальше.

$naam = Read-Host "Voer product naam in"
# Set global variables

$APIKey = 'Myapikey'
$EncodedCredentials = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $APIKey,$null)))
$HTTPHeaders = @{ "X-ApiKey" = $APIKey}
$HTTPHeaders.Add('Authorization', ("Basic {0}" -f $EncodedCredentials))
$HTTPHeaders.Add('Content-Type', 'application/json')


$URL = 'https://helpdesk.company.nl/cmdb/items/list.json?field=name&q='+$naam
(Invoke-WebRequest -Method Get -Uri $URL -Headers $HTTPHeaders ).content

Ниже приведены некоторые значения, которые возвращаются после запуска выше

{"config_items":[{"id":25000477949,"name":"SYS-MB1334","description":null,"ci_type_id":25000015988,"impact":1,"created_at":"2020-03-12T10:14:40+01:00","updated_at":"2020-04-24T16:42:42+02:00"

Я хотел бы сохранить переменную name и id, например

1 Ответ

1 голос
/ 29 апреля 2020

К сожалению, JSON, который вы показываете, недопустим.

Предположим, что json, возвращенный из

$output = (Invoke-WebRequest -Method Get -Uri $URL -Headers $HTTPHeaders ).Content

, выглядит следующим образом:

{"config_items":
[{"id":25000477949,"name":"SYS-MB1334","description":null,"ci_type_id":25000015988,"impact":1,"created_at":"2020-03-12T10:14:40+01:00","updated_at":"2020-04-24T16:42:42+02:00"},
 {"id":12345678901,"name":"SYS-MB9876","description":null,"ci_type_id":12358745896,"impact":1,"created_at":"2020-03-12T10:14:40+01:00","updated_at":"2020-04-24T16:42:42+02:00"}]
}

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

$result = ($output | ConvertFrom-Json).config_items | 
          Select-Object @{Name = 'Id';   Expression = {$_.id}},
                        @{Name = 'Name'; Expression = {$_.name}}

# output on screen
$result

# output to CSV file
$result | Export-Csv -Path 'X:\TheOutput.csv' -NoTypeInformation

Вывод на экран будет выглядеть как

         Id Name      
         -- ----      
25000477949 SYS-MB1334
12345678901 SYS-MB9876

Надеюсь, что поможет

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