Scripts/Replace_VPNHub_AllSpokes.ps1
<#
.SYNOPSIS This script replaces the VPN hub for all spoke networks in a Meraki organization. .DESCRIPTION This script retrieves all the networks in a Meraki organization and replaces the VPN hub for all spoke networks with a new hub. .PARAMETER AuthToken The Meraki API key used to authenticate the API requests. .PARAMETER NewHubNetID The ID of the new hub network. .EXAMPLE Replace_VPNHub_AllSpokes.ps1 -AuthToken "c52eb4521568840d65dfdbf6a5" -NewHubNetID "L_725079259" .NOTES Author: Alex Heimbuch Last Edit: 2023-10-19 #> [CmdletBinding()] param( [Parameter(Mandatory=$true)] [string]$AuthToken, [Parameter(Mandatory=$true)] [string]$NewHubNetID, [Parameter(Mandatory=$false)] [bool]$DefaultRoute = $false ) if($DefaultRoute){ $useDefaultRoute = "True" } else { $useDefaultRoute = "False" } $Networks = Get-MerakiOrganizationNetworks -auth $AuthToken ForEach ($Network in $Networks){ $Network.id $VPNConfig = Get-MerakiNetworkApplianceVpnSiteToSiteVpn -auth $AuthToken -NetworkId $Network.id If($VPNConfig.mode -eq "spoke"){ $VPNConfig.hubs = [pscustomobject]@{ hubId = $NewHubNetID useDefaultRoute = $useDefaultRoute } $VPNConfig = $VPNConfig | ConvertTo-Json -Compress Set-MerakiNetworkApplianceVpnSiteToSiteVpn -AuthToken $AuthToken -NetworkId $Network.id -VPNConfig $VPNConfig } } |