向 DNS 服务器查询所有正向查找区域中的特定 IP 地址?

Query DNS server for specific IP address in all Forward Lookup Zones?

我是 运行 Windows 超过 100 个正向查找区域的服务器 DNS。 我需要找到哪个正向查找区域或 DNS 条目正在使用特定的 IP 地址?

因此输入将是:192.0.2.4(任何 IP 地址) 结果:任何正向查找区域及其包含上述 IP 地址的 DNS 条目。

这里的目标是找到由于旧 IP 地址而不再有效的 DNS 条目。

一个不起作用的例子:

Get-DnsServerResourceRecord -ZoneName * | Where-Object {$_.IPv4Address.IPAddressToString -contains '192.0.2.4' }

您可以先查询您的区域并循环遍历它们:

$zones = Get-DnsServerZone | where {!$_.IsReverseLookupZone -and $_.ZoneType -eq 'Primary'}
foreach ($zone in $zones) {
    Get-DnsServerResourceRecord -ZoneName $zone.ZoneName |
        Where {$_.RecordData.Ipv4Address.IPAddressToString -contains '192.0.2.4'} |
            Select HostName,RecordType,Type,RecordData,Timestamp,TimeToLive,@{n='Zone';e={$zone.ZoneName}}
}

如果您想要网格视图,请使用 Out-Gridview:

$zones = Get-DnsServerZone | where {!$_.IsReverseLookupZone -and $_.ZoneType -eq 'Primary'}
$output = foreach ($zone in $zones) {
    Get-DnsServerResourceRecord -ZoneName $zone.ZoneName |
        Where {$_.RecordData.Ipv4Address.IPAddressToString -contains '192.0.2.4'} |
            Select HostName,RecordType,Type,RecordData,Timestamp,TimeToLive,@{n='Zone';e={$zone.ZoneName}}
}
$output | Out-GridView

一个基本的 nslookup 就可以做到这一点

nslookup 192.0.2.4

如果命中,结果将显示匹配记录的 FQDN(这就是您要查找的内容:记录+区域)。