Skip to content

Instantly share code, notes, and snippets.

@liveaverage
Created January 16, 2013 18:29
Show Gist options
  • Save liveaverage/4549500 to your computer and use it in GitHub Desktop.
Save liveaverage/4549500 to your computer and use it in GitHub Desktop.
Powershell wrapper for dnscmd operations. Detects NS resource records in reverse lookup zones and generates commands for automatic removal.
$ds = "dns.yourdomain.com"
$nd = "node.to.delete.yourdomain.com"
function Get-RevZones ($ds)
{
$header = @("zonename","type","storage","prop","lookup")
$raw = (dnscmd $ds /enumzones /reverse) | ?{$_ -match "Rev"} | %{$_ -replace "^."} | %{$_ -replace '\s+', ','}
return ($raw | ConvertFrom-Csv -Header $header)
}
function Test-ZoneRecordNS ($ds, $zone, $node)
{
$out = (dnscmd $ds /enumrecords $zone . /Type NS)
if ($out -match $node)
{
return $True
}
else
{
return $False
}
}
$za = Get-RevZones $ds
$com = @()
foreach ($z in $za)
{
if (Test-ZoneRecordNS $ds $z.zonename $nd)
{
Add-Member -InputObject $z -Name "nodeDetected" -Value [Boolean]"" -MemberType NoteProperty -Force
$z.nodeDetected = $true
$com += "dnscmd $ds /recorddelete $($z.zonename) @ NS $nd /f"
}
else
{
Add-Member -InputObject $z -Name "nodeDetected" -Value [Boolean]"" -MemberType NoteProperty -Force
$z.nodeDetected = $false
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment