Public/Wipe-Zones.ps1
## This wipes all zones or one zone function Wipe-Zones { [CmdletBinding()] param( [Parameter()] [String]$Zone, [Parameter()] [Array]$NewZones, [Parameter()] [Bool]$AutoGetZones = $False ) if (![string]::IsNullOrEmpty($Zone)) { if (($NewZones.Count -eq 0) -or ($NewZones -eq $Null)) { $NewZones = Get-R53HostedZoneList } $ZoneObject = ($NewZones | Where {$_.Name -like ($Zone + '*')}) if ($ZoneObject.GetType().BaseType.Name -eq "Array") { Write-Error -Message "Multiple zones returned, not proceeding" return $ZoneObject } else { $ZoneId = $ZoneObject.Id.Replace("/hostedzone/", "") $RRs = (Get-R53ResourceRecordSet -HostedZoneId $ZoneId).ResourceRecordSets | Where {($_.Type -ne "NS") -and ($_.Type -ne "SOA")} if ($RRS.Count -gt 0) { $changes = @() foreach ($rr in $RRs) { $delChange = New-Object Amazon.Route53.Model.Change $delChange.Action = "DELETE" $delChange.ResourceRecordSet = $rr $changes = $changes + $delChange } Edit-R53ResourceRecordSet -HostedZoneId $ZoneId -Region us-east-1 -ChangeBatch_Comment ("WipeZone at " + (Get-Date).DateTime) -ChangeBatch_Change $changes } } } else { if (($NewZones.Count -eq 0) -or ($NewZones -eq $Null) -or $AutoGetZones) { $NewZones = Get-R53HostedZoneList } foreach ($z in $NewZones) { $RRs = (Get-R53ResourceRecordSet -HostedZoneId $z.Id).ResourceRecordSets | Where {($_.Type -ne "NS") -and ($_.Type -ne "SOA")} if ($RRS.Count -gt 0) { $changes = @() foreach ($rr in $RRs) { $delChange = New-Object Amazon.Route53.Model.Change $delChange.Action = "DELETE" $delChange.ResourceRecordSet = $rr $changes = $changes + $delChange } Edit-R53ResourceRecordSet -HostedZoneId $z.Id -Region us-east-1 -ChangeBatch_Comment ("WipeZones at " + (Get-Date).DateTime) -ChangeBatch_Change $changes } } } } |