Public/Set-MerakiOrganizationConfigTemplateSwitchProfilePort.ps1

function Set-MerakiOrganizationConfigTemplateSwitchProfilePort {
    <#
    .SYNOPSIS
    Updates the switch profile port for a network switch in an organization's configuration template.
     
    .DESCRIPTION
    The Set-MerakiOrganizationConfigTemplateSwitchProfilePort function allows you to update the switch profile port for a specified network switch in an organization's configuration template by providing the authentication token, organization ID, configuration template ID, profile ID, port ID, and a JSON formatted string of switch profile port configuration.
     
    .PARAMETER AuthToken
    The authentication token (API key) required to access the Meraki Dashboard API.
     
    .PARAMETER OrganizationId
    The ID of the Meraki organization.
     
    .PARAMETER ConfigTemplateId
    The ID of the configuration template in the organization.
     
    .PARAMETER ProfileId
    The ID of the switch profile in the configuration template.
     
    .PARAMETER PortId
    The ID of the port in the switch profile.
     
    .PARAMETER PortConfig
    A JSON formatted string of switch profile port configuration.
     
    .EXAMPLE
    $PortConfig = '{
        "name": "My switch port",
        "tags": [ "tag1", "tag2" ],
        "enabled": true,
        "poeEnabled": true,
        "type": "access",
        "vlan": 10,
        "voiceVlan": 20,
        "allowedVlans": "1,3,5-10",
        "isolationEnabled": false,
        "rstpEnabled": true,
        "stpGuard": "disabled",
        "linkNegotiation": "Auto negotiate",
        "portScheduleId": "1234",
        "udld": "Alert only",
        "accessPolicyType": "Sticky MAC allow list",
        "accessPolicyNumber": 2,
        "macAllowList": [
            "34:56:fe:ce:8e:b0",
            "34:56:fe:ce:8e:b1"
        ],
        "stickyMacAllowList": [
            "34:56:fe:ce:8e:b0",
            "34:56:fe:ce:8e:b1"
        ],
        "stickyMacAllowListLimit": 5,
        "stormControlEnabled": true,
        "flexibleStackingEnabled": true,
        "daiTrusted": false,
        "profile": {
            "enabled": false,
            "id": "1284392014819",
            "iname": "iname"
        }
    }'
    $PortConfig = $PortConfig | ConvertTo-Json
    Set-MerakiOrganizationConfigTemplateSwitchProfilePort -AuthToken "your-api-token" -OrganizationId "1234" -ConfigTemplateId "5678" -ProfileId "91011" -PortId "121314" -PortConfig $PortConfig
     
    This example updates the switch profile port for the network switch in the Meraki organization with ID "1234", configuration template ID "5678", profile ID "91011", and port ID "121314" with the specified switch profile port configuration.
     
    .NOTES
    The function requires the "Invoke-RestMethod" cmdlet to be available.
     
    The function returns the response from the API if the update is successful, otherwise, it displays an error message.
    #>

    
        [CmdletBinding()]
        param (
            [parameter(Mandatory=$true)]
            [string]$AuthToken,
            [parameter(Mandatory=$true)]
            [string]$OrganizationId,
            [parameter(Mandatory=$true)]
            [string]$ConfigTemplateId,
            [parameter(Mandatory=$true)]
            [string]$ProfileId,
            [parameter(Mandatory=$true)]
            [string]$PortId,
            [parameter(Mandatory=$true)]
            [string]$PortConfig
        )
    
        try {
            $header = @{
                "X-Cisco-Meraki-API-Key" = $AuthToken
                "content-type" = "application/json; charset=utf-8"
            }
    
            $url = "https://api.meraki.com/api/v1/organizations/$OrganizationId/configTemplates/$ConfigTemplateId/switch/profiles/$ProfileId/ports/$PortId"
    
            $body = $PortConfig
    
            $response = Invoke-RestMethod -Method Put -Uri $url -Header $header -Body $body
            return $response
        }
        catch {
            Write-Host $_
        }
    }