2016-12-06 192 views
0

我想从我们的DNS服务器中删除所有公共IPv6地址,例如2000:a61:10e3:8f01 ::或2003:d8:8bd7:c000 ::但保留所有链接本地或站点本地地址,例如fd00 ::不变。如何使用Powershell从DNS中删除特定的AAAA记录?

我想出如何让所有的AAAA记录的列表:

$DNSServer = "dns.domain.net" 
$ZoneName = "domain.net" 
$NodeDNS = $null 
$NodeDNS = Get-DnsServerResourceRecord -ZoneName $ZoneName -ComputerName $DNSServer -RRType AAAA -ErrorAction SilentlyContinue 

现在的问题是,如何调用删除,DNSServerResourceRecord命令之前过滤所有那些“公共”的记载?

Remove-DnsServerResourceRecord -ZoneName $ZoneName -ComputerName $DNSServer -InputObject $NodeDNS -Force 

将删除所有的AAAA记录。

回答

0

您可以使用此过滤器:

Get-DnsServerResourceRecord -ZoneName $ZoneName -ComputerName $DNSServer -RRType AAAA -ErrorAction SilentlyContinue | 
Where-Object {$_.RecordData.IPv6Address.IPAddressToString -match '2000:a61:10e3:8f01' -or ` 
$_.RecordData.IPv6Address.IPAddressToString -match '2003:d8:8bd7:c000' -and ` 
$_.RecordData.IPv6Address.IPAddressToString -notmatch '^fd00' 
} | Remove-DnsServerResourceRecord -ZoneName $ZoneName -WhatIf 

样品使用位置对象进行筛选返回特定字符串数据-match-and-notmatch进一步解释见Get-Help about_Comparison_Operators

我已经添加了-WhatIf参数这表明它的作用其实之前做出改变,只是为了确保你在删除前得到正确的结果,如果它的确定,删除-WhatIf

+0

谢谢您的输入!这将工作,但我无法将筛选结果传递给Remove-DnsServerResourceRecord。如果我这样做的建议,我收到一个异常:'+删除 - DnsServerResourceRecord -WhatIf + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~ + CategoryInfo:InvalidArgument:(DnsServerResourceRecord:PSObject)[Remove-DnsServerResourceRecord],ParameterBindingException + FullyQualifiedErrorId:InputObjectMissingMandatory,Remove-DnsServerResourceRecord' – Roland

+0

只需添加'$ ZoneName',更新了答案并如果它解决了您的问题投票/接受回答 – Avshalom

+0

我还必须添加-ComputerName $ DNSServer。现在它工作了! – Roland