public/Get-DattoDevices.ps1
<#
.SYNOPSIS Returns a list of Datto devices for a given site. .DESCRIPTION Returns a list of Datto devices for a given site. Requires a valid AEM token and the site UID. .NOTES https://concord-api.centrastage.net/api/swagger-ui/index.html#//v3 .LINK .EXAMPLE Get-DattoDevices -AEMToken $AEMToken -SiteUID "6a716b86-7a49-44dc-bc7f-e3cf1d976bff" .EXAMPLE Get-DattoSites -APIToken | Get-DattoDevices -APIToken $AEMToken #> function Get-DattoDevices { param ( [parameter(Mandatory = $true)][string]$APIToken, [parameter(Mandatory = $true, ValueFromPipelineByPropertyName)][string]$SiteUID ) process { $Results = [System.Collections.Generic.List[array]]::new() $DeviceURI = [System.UriBuilder]::new() $DeviceURI.Host = ("concord-api.centrastage.net/api/v2/site/{0}/devices" -f $SiteUID) $DeviceURI.Scheme = "https" $DeviceHeaders = @{ "Authorization" = "Bearer $AEMToken" } $o = Invoke-RestMethod -Method GET -ContentType "application/json" -Uri $DeviceURI.Uri.AbsoluteUri -Headers $Headers $Results.Add($o.Devices) if ($o.pageDetails.nextPageUrl.Length -gt 0 ) { do { $x = Invoke-RestMethod -Method GET -ContentType "application/json" -Uri $DeviceObj.pageDetails.nextPageUrl -Headers $DeviceHeaders $Results.Add($x.Devices) } while ($x.pageDetails.nextPageUrl.Length -gt 0) } $Return = @() $Results | ForEach-Object { $Return += $_ } return [DattoDevice]::ToReport($Return) } } |