如何使用Powershell从DNS中删除特定的AAAA记录?

时间:2016-12-06 08:33:42

标签: powershell dns ipv6

我想从DNS服务器中删除所有公共IPv6地址,例如2000:a61:10e3:8f01 ::或2003:d8:8bd7:c000 ::但保留所有链接本地或站点本地地址,例如fd00 ::未触及。

我想了解如何获取所有AAAA记录的列表:

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

现在的问题是如何在调用Remove-DNSServerResourceRecord命令之前过滤所有这些“公共”记录?

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

将删除所有AAAA记录。

1 个答案:

答案 0 :(得分: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

示例使用Where-Object过滤具有特定字符串-match -and-notmatch的返回数据,以获取进一步说明,请参阅Get-Help about_Comparison_Operators

我已经添加了-WhatIf参数,该参数在实际进行更改之前显示了它的作用,只是为了确保在删除之前得到正确的结果,如果没问题,请删除{ {1}}