Execute AirWatch Rest API Call

.SYNOPSIS This Poweshell script make a REST API call to an AirWatch server. This particular script is used to pull device information based on serial numbers pulled from a file. If you need to build your own script, concentrate on the Get-BasicUserForAuth function. This creates the Base64 authentication string. Also look at the Build-Headers function as this is a requirement for the REST call.

.DESCRIPTION To understand the underlying call check https:// /API/v1/mdm/devices/help/resources/GetDevicesByBulkSerialNumber. 

. EXAMPLE Execute-AWRestAPI.ps1 -userName Administrator -password password -tenantAPIKey 4+apikeyw/krandomSstuffIleq4MY6A7WPmo9K9AbM6A= -outputFile c:\Users\Administrator\Desktop\output.txt -endpointURL https://demo.awmdm.com/API/v1/mdm/devices/serialnumber -inputFile C:\Users\Administrator\Desktop\SerialNumbers1.txt -Verbose

. PARAMETER userName An AirWatch account in the tenant is being queried. This user must have the API role at a minimum.

. PARAMETER password The password that is used by the user specified in the username parameter

. PARAMETER tenantAPIKey This is the REST API key that is generated in the AirWatch Console. You locate this key at All Settings -> Advanced -> API -> REST, and you will find the key in the API Key field. If it is not there you may need override the settings and Enable API Access

. PARAMETER endpointURL This will be the https:// /API/v1/mdm/devices/serialnumber. If you want to modify this script to get other data please contact the REST API help at https:// /API/help.

. PARAMETER inputFile This will be the complete path and filename to a file that list you device serial numbers. You will have one serial number per line with not fomatting. Just the serial number of the device(s) you want information for.

. PARAMETER outputFile (optional) This is not required. If you don't specify this parameter on the command line, the script will just show

Sign in to be able to add comments.

Comments 4

4377832209 6 years ago
Hi there.

Does this code sample still work? I've tried using it - and similar other creations in PowerShell - but it looks like the AirWatch API is expecting the authentication to happen in the initial request, where this is waiting for a challenge prior to submitting the stored credentials. As a consequence, AirWatch returns:

Invoke-RestMethod : {"errorCode":1003,"message":"The authorization header is empty or the scheme is not

If I try to make similar requests using Postman - which includes credentials in the request header rather than waiting for a challenge - it's successful.

If anyone has this working - please post! I'll try to work through this in the background.


4377832209 6 years ago
Ignore me. I think a proxy was getting in my way. Admins - feel free to delete the comments. Apologies for cluttering up this area.
4667229997 5 years ago
i get this error, any ideas on it??? Invoke-RestMethod : {"errorCode":1005,"message":"User is not active.","activityId":"7f19f466-0e3d-4d7c-91b8-ae9b429c284c"}
2233076062 3 years ago
Is there a way to fetch just the changes since the last fetch? We need near-real-time data and it seems like a bad idea to pull in all of the data every 10 minutes.