Public/Get-MerakiNetworkSwitchDHCPV4ServersSeen.ps1

function Get-MerakiNetworkSwitchDHCPV4ServersSeen {
    <#
    .SYNOPSIS
        Gets the DHCPv4 servers seen for a Meraki network switch.
    .DESCRIPTION
        This function retrieves the DHCPv4 servers seen for a Meraki network switch using the Meraki Dashboard API.
    .PARAMETER AuthToken
        The API authentication token for the Meraki Dashboard.
    .PARAMETER networkId
        The ID of the Meraki network to retrieve the DHCPv4 servers seen for.
    .PARAMETER t0
        The beginning of the timespan for which DHCPv4 servers will be fetched. Format is ISO-8601 (YYYY-MM-DDTHH:MM:SS). This parameter is required if the timespan parameter is not used.
    .PARAMETER timespan
        The timespan for which DHCPv4 servers will be fetched. This parameter is required if the t0 parameter is not used. The maximum value of this parameter is 365 days.
    .PARAMETER perPage
        The number of entries per page to return. Default is 10.
    .PARAMETER startingAfter
        A token used to retrieve the next page of results. This is obtained from the 'nextPage' property in the response of the previous call. Default is null.
    .PARAMETER endingBefore
        A token used to retrieve the previous page of results. This is obtained from the 'previousPage' property in the response of the previous call. Default is null.
    .EXAMPLE
        PS C:\> Get-MerakiNetworkSwitchDHCPV4ServersSeen -AuthToken "api_token" -networkId "L_123456789"
        Returns the DHCPv4 servers seen for the specified Meraki network switch.
    #>

    param (
        [parameter(Mandatory=$true)]
        [string]$AuthToken,
        [parameter(Mandatory=$true)]
        [string]$networkId,
        [parameter(Mandatory=$false)]
        [string]$t0 = $null,
        [parameter(Mandatory=$false)]
        [int]$timespan = $null,
        [parameter(Mandatory=$false)]
        [int]$perPage,
        [parameter(Mandatory=$false)]
        [string]$startingAfter,
        [parameter(Mandatory=$false)]
        [string]$endingBefore
    )
    try {
        $header = @{
            "X-Cisco-Meraki-API-Key" = $AuthToken
        }
        $queryParams = @{}
        if ($timespan) {
            $queryParams['timespan'] = $timespan
        } else {
            if ($t0) {
                $queryParams['t0'] = $t0
            }
        }
        if ($perPage) {
            $queryParams['perPage'] = $perPage
        }
        if ($startingAfter) {
            $queryParams['startingAfter'] = $startingAfter
        }
        if ($endingBefore) {
            $queryParams['endingBefore'] = $endingBefore
        }
        $queryString = New-MerakiQueryString -queryParams $queryParams
        $URL = "https://api.meraki.com/api/v1/networks/$networkId/switch/dhcp/v4/servers/seen?$queryString"
        $URI = [uri]::EscapeUriString($URL)
        $response = Invoke-RestMethod -Method Get -Uri $URI -Header $header -UserAgent "MerakiPowerShellModule/1.0.2 DocNougat"
        return $response
    } catch {
        Write-Error "Failed to retrieve DHCPv4 servers seen for network '$networkId'. Error: $($Error[0])"
    }
}