Cas van den Wijngaard
Cas van den Wijngaard

Reputation: 37

FreshAgent Get Asset Data

I am trying to fetch asset data from the Fresh client with Powershell. I am able to get any asset by typing it's name but I want to save some of the variables it returns so I can use it further.

$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

The following are some of the values that return after I run the above

{"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"

I would like to save the name and id variable for example

Upvotes: 0

Views: 42

Answers (1)

Theo
Theo

Reputation: 61208

Unfortunately, the JSON you show is invalid.

Suppose the json returned from

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

looks like:

{"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"}]
}

Then you can collect the properties you need from the config_items using:

$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

Output on screen would look like

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

Hope that helps

Upvotes: 1

Related Questions