Cleaning up old DNS NS records in an Active Directory forest,
needed some powershell to help remove all the old DNS server names from various domains that have been removed from the forest over time or demoted / decommissioned.
$dnszones = Get-DnsServerZone
foreach ( $dnz in $dnszones ) {
$dnz
$z1= $dnz | Get-DnsServerResourceRecord -name "@" -rrtype "NS"
$bad1=@() ;
foreach ( $z in $z1 ) {
# $z.recorddata
try {
$i= Resolve-DnsName $z.RecordData.NameServer -erroraction stop
}
catch {
$bad1 += $z.recorddata.nameserver
"$($z.RecordData.NameServer) error add to bad list " | write-host -ForegroundColor DarkYellow
}
}
foreach ( $b in $bad1 ) {
"removing $b from $dnz.zonename" | Write-host -ForegroundColor Yellow
Remove-DNSServerResourceRecord -zonename $dnz.zonename –Name “@” –RRType NS –RecordData $b -force
}
}