Documentation forDameware Remote Everywhere

GET device/group using PowerShell in DRE

This example script uses PowerShell to query the /device/group API endpoint and output the contents as JSON. This call requires a private API key and returns a list of device groups.

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Accept", "application/json")
$headers.Add("INTEGRATION-KEY", "<my_private_api_key>")
$response = Invoke-RestMethod '<Your_domain_for_APIs>/device/group' -Method 'GET' -Headers $headers
$response | ConvertTo-Json

Breakdown

$headers.Add("Accept", "application/json") Initializes a new dictionary object to store HTTP request headers.
$headers.Add("Accept", "application/json") Adds an Accept header to the dictionary, indicating that the client expects the response in JSON format.
$headers.Add("INTEGRATION-KEY", "<my_private_api_key>") Authenticates the API call by adding the INTEGRATION-KEY header.
$response = Invoke-RestMethod '<Your_domain_for_APIs>/device/group' -Method 'GET' -Headers $headers Sends a GET request to the specified URL using the previously defined headers. The response from the server is stored in the $response variable.
$response | ConvertTo-Json The response object is piped to ConvertTo-Json, which converts it into a JSON-formatted string.

Script outputs

You can choose to convert the response to different formats and output the results to a file:

CLI XML $response | Export-Clixml -Path "output.xml"
CSV $response | Export-Csv -Path "output.csv"
HTML $response | ConvertTo-Html -As Table | Out-File -FilePath "output.html"
JSON $response | ConvertTo-Json | Out-File -FilePath "output.json"
Text $response | Out-File -FilePath "output.txt"
XML $response | ConvertTo-Xml | Out-File -FilePath "output.xml"

Error Handling

The script may be tweaked to handle any returned error codes.

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Accept", "application/json")
$headers.Add("INTEGRATION-KEY", "<my_private_api_key>")

try {
    $response = Invoke-RestMethod '<Your_domain_for_APIs>/device/group' -Method 'GET' -Headers $headers
    $response | ConvertTo-Json
    Write-Host "Success: (200) Request was successful."
}
catch {
    $statusCode = $_.Exception.Response.StatusCode.value__
    $statusDescription = $_.Exception.Response.StatusDescription

    switch ($statusCode) {
        200 { Write-Host "Success: ($statusCode) $statusDescription" }
        400 { Write-Host "Error: Invalid request ($statusCode) $statusDescription" }
        403 { Write-Host "Error: Invalid key ($statusCode) $statusDescription" }
        429 { Write-Host "Error: Too many requests ($statusCode) $statusDescription" }
        default { Write-Host "Error: An unexpected error occurred: ($statusCode) $statusDescription" }
    }
}

Breakdown

try The try block executes the Invoke-RestMethod command and convert the response to JSON
catch The catch block catches any exceptions thrown due to HTTP errors.
switch The switch statement handles known error codes with specific messages.
default The default case in the switch statement catches any other status code and treats it as an unexpected error, printing a generic error message.