Public/Invoke-MerakiNetworkBindNetwork.ps1

function Invoke-MerakiNetworkBindNetwork {
    <#
    .SYNOPSIS
    Binds a Meraki network to a configuration template using the Meraki Dashboard API.
 
    .DESCRIPTION
    The Invoke-MerakiNetworkBindNetwork function allows you to bind a Meraki network to a configuration template by providing the authentication token, network ID, and a JSON string containing the bind configuration.
 
    .PARAMETER AuthToken
    The authentication token (API key) required to access the Meraki Dashboard API.
 
    .PARAMETER NetworkId
    The ID of the Meraki network to be bound to a configuration template.
 
    .PARAMETER BindConfig
    A JSON string containing the bind configuration. The JSON string should conform to the schema definition provided by the Meraki Dashboard API.
 
    .EXAMPLE
    $BindConfig = [PSCustomObject]@{
        configTemplateId = "N_123456789012345678"
        autoBind = $true
    }
 
    $BindConfig = $BindConfig | ConvertTo-Json -Compress
 
    Invoke-MerakiNetworkBindNetwork -AuthToken "your-api-token" -NetworkId "L_123456789012345678" -BindConfig $BindConfig
 
    This example binds the Meraki network with ID "L_123456789012345678" to the configuration template with ID "N_123456789012345678" and enables auto-bind for switch networks and switch templates.
 
    .NOTES
    The function requires the "Invoke-RestMethod" cmdlet to be available.
 
    The function returns the response from the API if the binding is successful, otherwise, it displays an error message.
    #>


    [CmdletBinding()]
    param (
        [parameter(Mandatory=$true)]
        [string]$AuthToken,
        [parameter(Mandatory=$true)]
        [string]$NetworkId,
        [parameter(Mandatory=$true)]
        [string]$BindConfig
    )

    try {
        $header = @{
            "X-Cisco-Meraki-API-Key" = $AuthToken
            "content-type" = "application/json; charset=utf-8"
        }

        $body = $BindConfig

        $url = "https://api.meraki.com/api/v1/networks/$NetworkId/bind"

        $response = Invoke-RestMethod -Method Post -Uri $url -Header $header -UserAgent "MerakiPowerShellModule/1.0.2 DocNougat" -Body $body
        return $response
    }
    catch {
        Write-Debug $_
        Throw $_
    }
}