Public/Invoke-MerakiOrganizationCloneSwitchDevices.ps1

function Invoke-MerakiOrganizationCloneSwitchDevices {
    <#
    .SYNOPSIS
    Clones the configuration of a source switch to one or more target switches in a Meraki organization.
     
    .DESCRIPTION
    The Invoke-MerakiOrganizationCloneSwitchDevices function allows you to clone the configuration of a source switch to one or more target switches in a Meraki organization by providing the authentication token, organization ID, and a JSON formatted string of clone configuration.
     
    .PARAMETER AuthToken
    The authentication token (API key) required to access the Meraki Dashboard API.
     
    .PARAMETER OrganizationId
    The ID of the Meraki organization.
     
    .PARAMETER CloneConfig
    A JSON formatted string of clone configuration.
     
    .EXAMPLE
    $CloneConfig = '{
        "sourceSerial": "Q234-ABCD-5678",
        "targetSerials": [
            "Q234-ABCD-0001",
            "Q234-ABCD-0002",
            "Q234-ABCD-0003"
        ]
    }'
    $CloneConfig = $CloneConfig | ConvertTo-Json -Compress
    Invoke-MerakiOrganizationCloneSwitchDevices -AuthToken "your-api-token" -OrganizationId "1234" -CloneConfig $CloneConfig
     
    This example clones the configuration of the source switch with serial number "Q234-ABCD-5678" to the target switches with serial numbers "Q234-ABCD-0001", "Q234-ABCD-0002", and "Q234-ABCD-0003" in the Meraki organization with ID "1234".
     
    .NOTES
    The function requires the "Invoke-RestMethod" cmdlet to be available.
     
    The function returns the response from the API if the clone operation is successful, otherwise, it displays an error message.
    #>

    
        [CmdletBinding()]
        param (
            [parameter(Mandatory=$true)]
            [string]$AuthToken,
            [parameter(Mandatory=$false)]
            [string]$OrganizationId = (Get-MerakiOrganizations -AuthToken $AuthToken).id,
            [parameter(Mandatory=$true)]
            [string]$CloneConfig
        )
    
        try {
            $header = @{
                "X-Cisco-Meraki-API-Key" = $AuthToken
                "content-type" = "application/json; charset=utf-8"
            }
    
            $url = "https://api.meraki.com/api/v1/organizations/$OrganizationId/switch/devices/clone"
    
            $body = $CloneConfig
    
            $response = Invoke-RestMethod -Method Post -Uri $url -Header $header -Body $body
            return $response
        }
        catch {
            Write-Host $_
        }
    }