Public/Add-MrkNetworkStaticRoute.ps1
Function Add-MrkNetworkStaticRoute{ <# .SYNOPSIS Adds a Static Route to a Meraki network .DESCRIPTION Adds a Static Route to a Meraki network, identifying the network with the Network ID, to find an id use get-MrkNetwork .EXAMPLE Add-MrkNetworkStaticRoute -networkId X_111122223639801111 -name "vesselid-Client" -subnet 192.168.160.0/24 -gatewayIp 192.168.0.253 -enabled $true .PARAMETER networkId id of a network (get-MrkNetworks)[0].id .PARAMETER Name The Name of the new static route .PARAMETER subnet The subnet of the static route .PARAMETER gatewayIp The remote next-hop IP for the static route .PARAMETER enabled hardcoded value that enables this VLAN #> [CmdletBinding()] Param ( [Parameter(Mandatory)][ValidateNotNullOrEmpty()][String]$networkId, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][String]$name, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][String]$subnet, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][String]$gatewayIp, [Parameter()][ValidateNotNullOrEmpty()][boolean]$enabled=$true ) $body = @{ "name" = $name "subnet" = $subnet "gatewayIp" = $gatewayIp "enabled" = $enabled } #get the current list of Static routes $existingSRs = Get-MrkNetworkStaticRoute -networkId $networkId #in case a route already exists but needs to be updated initialize the [bool]$updateRoute. true/false determines the invoke PUT or POST [bool]$updateRoute = $false foreach ($sr in $existingSRs){ if($sr.subnet -match $subnet){ $updateRoute = $true $srId = $sr.id } } If($updateRoute){ $request = Invoke-MrkRestMethod -Method PUT -ResourceID ('/networks/' + $networkId + '/staticRoutes/' + $srId) -Body $body }else{ $request = Invoke-MrkRestMethod -Method POST -ResourceID ('/networks/' + $networkId + '/staticRoutes') -Body $body } return $request } |