Public/Get-MrkSwitch.ps1

function Get-MrkSwitch {
    <#
    .SYNOPSIS
    Retrieves all meraki switches for a Meraki network or a specific switch by serial number
    GET
        /devices/[serial]/switchPorts
        /devices/[serial]/switchPorts/[number]
        /networks/[networkId]/switch/settings
        /networks/{networkId}/switchStacks
        /networks/{networkId}/switchStacks/{switchStackId}
 
    PUT
        /devices/[serial]/switchPorts/[number]
        /networks/[networkId]/switch/settings
 
    .DESCRIPTION
    Gets a list of all Meraki switches in a Meraki network.
    .EXAMPLE
    Get-MrkSwitch
    .EXAMPLE
    Get-MrkSwitch -networkId X_112233445566778899
    .PARAMETER networkId
    specify a networkId, find an id using get-MrkNetworks
    .PARAMETER serial
    specify the device serialnumber
    #>

    [CmdletBinding(DefaultParameterSetName='network')]
    Param (
        [Parameter(Mandatory,ParameterSetName='network')][ValidateNotNullOrEmpty()][String]$networkId,
        [Parameter(Mandatory,ParameterSetName='serial')][ValidateNotNullOrEmpty()][String]$serial
    )
    switch ($PsCmdlet.ParameterSetName) {
        "network" {
            Invoke-MrkRestMethod -Method GET -ResourceID "/networks/$networkId/switch/settings"
        }
        "serial" {
            if ($mrkApiVersion -eq 'v0'){
                Invoke-MrkRestMethod -Method GET -ResourceID "/devices/$serial/switchPorts"
            } Else { #mrkApiVersion v1
                Invoke-MrkRestMethod -Method GET -ResourceID "/devices/$serial/switch/ports"
            }
        }
    }
}