Public/Get-MerakiOrganizationDevicesUplinksAddressesByDevice.ps1

function Get-MerakiOrganizationDevicesUplinksAddressesByDevice {
    <#
    .SYNOPSIS
    Gets the uplink addresses of devices in a Meraki organization.
 
    .DESCRIPTION
    This function retrieves the uplink addresses of devices in a Meraki organization. You can filter the results by specifying various parameters.
 
    .PARAMETER AuthToken
    The API key for accessing the Meraki dashboard.
 
    .PARAMETER OrgId
    The ID of the organization to retrieve devices from. If not specified, the ID of the first organization associated with the API key will be used.
 
    .PARAMETER perPage
    The number of entries per page to return.
 
    .PARAMETER startingAfter
    The starting device serial for the list of devices returned. Used for pagination.
 
    .PARAMETER endingBefore
    The ending device serial for the list of devices returned. Used for pagination.
 
    .PARAMETER networkIds
    An array of network IDs to filter the results by.
 
    .PARAMETER productTypes
    An array of product types to filter the results by.
 
    .PARAMETER serials
    An array of device serials to filter the results by.
 
    .PARAMETER tags
    An array of tags to filter the results by.
 
    .PARAMETER tagsFilterType
    The type of tag filtering to use. Can be "withAnyTags" or "withAllTags".
 
    .EXAMPLE
    PS C:\> Get-MerakiOrganizationDevicesUplinksAddressesByDevice -AuthToken "1234567890abcdef" -networkIds "N_1234567890abcdef", "N_0987654321zyxwvu"
 
    This example retrieves the uplink addresses of devices in the specified networks.
 
    .NOTES
    This function requires the Meraki PowerShell module to be installed. You can install it with the following command:
 
    Install-Module -Name Cisco.Meraki
 
    .LINK
    https://developer.cisco.com/meraki/api-v1/#!get-organizations-organization-id-devices-uplinks-addresses-by-device
    #>

    [CmdletBinding()]
    param (
        [parameter(Mandatory=$true)]
        [string]$AuthToken,
        [parameter(Mandatory=$false)]
        [string]$OrganizationID = (Get-OrgID -AuthToken $AuthToken),
        [parameter(Mandatory=$false)]
        [int]$perPage = $null,
        [parameter(Mandatory=$false)]
        [string]$startingAfter = $null,
        [parameter(Mandatory=$false)]
        [string]$endingBefore = $null,
        [parameter(Mandatory=$false)]
        [array]$networkIds = $null,
        [parameter(Mandatory=$false)]
        [array]$productTypes = $null,
        [parameter(Mandatory=$false)]
        [array]$serials = $null,
        [parameter(Mandatory=$false)]
        [array]$tags = $null,
        [parameter(Mandatory=$false)]
        [string]$tagsFilterType = $null
    )
    If($OrganizationID -eq "Multiple organizations found. Please specify an organization ID.") {
        Return "Multiple organizations found. Please specify an organization ID."
    } else {
        try { 
            $header = @{
                "X-Cisco-Meraki-API-Key" = $AuthToken
                "Content-Type" = "application/json"
            }
            $queryParams = @{}
            if ($perPage) {
                $queryParams['perPage'] = $perPage
            }
            if ($startingAfter) {
                $queryParams['startingAfter'] = $startingAfter
            }
            if ($endingBefore) {
                $queryParams['endingBefore'] = $endingBefore
            }
            if ($networkIds) {
                $queryParams['networkIds[]'] = $networkIds
            }
            if ($productTypes) {
                $queryParams['productTypes[]'] = $productTypes
            }
            if ($serials) {
                $queryParams['serials[]'] = $serials
            }
            if ($tags) {
                $queryParams['tags[]'] = $tags
            }
            if ($tagsFilterType) {
                $queryParams['tagsFilterType'] = $tagsFilterType
            }
        
            $queryString = New-MerakiQueryString -queryParams $queryParams
            $URI = "https://api.meraki.com/api/v1/organizations/$OrganizationID/devices/uplinks/addresses/byDevice?$queryString"
            $response = Invoke-RestMethod -Method Get -Uri $URI -Header $header
            return $response
        } catch {
            Write-Error $_
        }
    }
}