APICalls/Get-NetBoxDCIM.ps1
function Get-NetBoxDCIM { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [ValidateSet('Devices', 'Device-Types', 'Device-Bays', 'Device-Roles', 'Device-Bay-Templates', 'Console-Server-Ports', 'Console-Ports', 'Console-Server-Port-Templates', 'Console-Port-Templates', 'Connected-Device', 'Cables', 'Cable-Terminations', 'Front-Ports', 'Front-Port-Templates', 'Interface-Templates', 'Interfaces', 'Inventory-Item-Roles', 'Inventory-Item-Templates', 'Inventory-Items', 'Locations', 'Manufacturers', 'Module-Bay-Templates', 'Module-Bays', 'Module-Types', 'Modules', 'Platforms', 'Power-Feeds', 'Power-Outlets', 'Power-Outlet-Templates', 'Power-Panels', 'Power-Ports', 'Power-Port-Templates', 'Rack-Reservations', 'Rack-Roles', 'Rack-Types', 'Racks', 'Rear-Ports', 'Rear-Port-Templates', 'Regions', 'Site-Groups', 'Sites', 'Virtual-Chassis', 'Virtual-Device-Contexts' )] [String]$QueryObject, [String]$ID, [switch]$ShowQuery ) begin { $Method = 'Get' $APICall = 'dcim/' $APICall += $QueryObject.ToLower() + '/' if ($ID) { $APICall += "$ID/" } $Data = @() } process { try { $count = 0 do { if ($PagedData) { $PagedAPICall = "${APICall}?limit=50&offset=$Count" } else { # first request $PagedAPICall = "${APICall}" } if ($ShowQuery) { Write-Host $PagedAPICall } $PagedData = Invoke-NetBoxRestMethod -APICall $PagedAPICall -Method $Method # combine the previous object with the new entries try { if ($PagedData.results) { $Data += $PagedData.results } else { $Data += $PagedData } } catch { Write-Error "Unable to combine data. $_" } $count += 50 } while ($PagedData.next) } catch { throw } } end { return $Data } } |