functions/Get-DrmmSiteDevices.ps1
function Get-DrmmSiteDevices { <# .SYNOPSIS Fetches the devices records of the site identified by the given site uid. .DESCRIPTION Returns device settings, device type, device anti-virus status, device patch Status and UDF's. Device { a64Bit (boolean, optional), antivirus (Antivirus, optional), cagVersion (string, optional), creationDate (integer, optional), deleted (boolean, optional), description (string, optional), deviceClass (string, optional) = ['device', 'printer', 'esxihost', 'unknown'], deviceType (DevicesType, optional), displayVersion (string, optional), domain (string, optional), extIpAddress (string, optional), hostname (string, optional), id (integer, optional), intIpAddress (string, optional), lastAuditDate (integer, optional), lastLoggedInUser (string, optional), lastReboot (integer, optional), lastSeen (integer, optional), online (boolean, optional), operatingSystem (string, optional), patchManagement (PatchManagement, optional), portalUrl (string, optional), rebootRequired (boolean, optional), siteId (integer, optional), siteName (string, optional), siteUid (string, optional), snmpEnabled (boolean, optional), softwareStatus (string, optional), suspended (boolean, optional), udf (Udf, optional), uid (string, optional), warrantyDate (string, optional) } Antivirus { antivirusProduct (string, optional), antivirusStatus (string, optional) = ['RunningAndUpToDate', 'RunningAndNotUpToDate', 'NotRunning', 'NotDetected'] } DevicesType { category (string, optional), type (string, optional) } PatchManagement { patchStatus (string, optional) = ['NoPolicy', 'NoData', 'RebootRequired', 'InstallError', 'ApprovedPending', 'FullyPatched'], patchesApprovedPending (integer, optional), patchesInstalled (integer, optional), patchesNotApproved (integer, optional) } Udf { udf1 (string, optional), udf10 (string, optional), udf11 (string, optional), udf12 (string, optional), udf13 (string, optional), udf14 (string, optional), udf15 (string, optional), udf16 (string, optional), udf17 (string, optional), udf18 (string, optional), udf19 (string, optional), udf2 (string, optional), udf20 (string, optional), udf21 (string, optional), udf22 (string, optional), udf23 (string, optional), udf24 (string, optional), udf25 (string, optional), udf26 (string, optional), udf27 (string, optional), udf28 (string, optional), udf29 (string, optional), udf3 (string, optional), udf30 (string, optional), udf4 (string, optional), udf5 (string, optional), udf6 (string, optional), udf7 (string, optional), udf8 (string, optional), udf9 (string, optional) } .PARAMMETER siteUid Provide site uid which will be use to return this site devices. #> # Function Parameters Param ( [Parameter(Mandatory=$True)] $siteUid ) # Validate Site UID if($siteUid.GetType().Name -ne 'String') { return 'The Site UID is not a String!' } elseif($siteUid -notmatch '[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}') { return 'The Site UID format is incorrect!' } # Declare Variables $apiMethod = 'GET' $maxPage = 50 $nextPageUrl = $null $page = 0 $Results = @() do { $Response = New-ApiRequest -apiMethod $apiMethod -apiRequest "/v2/site/$siteUid/devices?max=$maxPage&page=$page" | ConvertFrom-Json if ($Response) { $nextPageUrl = $Response.pageDetails.nextPageUrl $Results += $Response.devices $page++ } } until ($nextPageUrl -eq $null) # Return all site devices return $Results } |