首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成指定子网中所有DNS记录的列表

生成指定子网中所有DNS记录的列表
EN

Stack Overflow用户
提问于 2014-03-20 08:48:08
回答 3查看 9.6K关注 0票数 2

我需要生成指定子网的所有DNS记录的列表。有没有一种方法可以使用powershell DNS cmdlet、DNSCMD或任何其他方法来实现这一点,这不是我目前使用的非常慢的方法?

我在枚举17.(7,8,9).162.(16-238)中的主机名。

代码语言:javascript
复制
$HostList = @()

ForEach ($a in 7..9) { 
    ForEach ($b in 16..238) {
        $DNSCheck = Resolve-DNSName "17.$a.162.$b"
        $HostList += ($DNSCheck.NameHost)
    }
}

Write-Host $HostList

我最终使用的是--非常感谢Ansgar。

代码语言:javascript
复制
$ZoneName = "some.domain"
$DNSHost = "dnsserver"

$Hosts = Get-DnsServerResourceRecord $ZoneName -ComputerName $DNSHost -RRType 'A' |? { 
    $Address = $_.RecordData.IPV4Address.ToString()
    $LastOctet = $Address.Split(".")[-1]
    $Address -like "17.[7-9].162.*" -and $LastOctet -in 16..238
}

ForEach ($H in $Hosts) {
    Write-Host $H.HostName
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-21 00:21:21

使用PowerShell DNS cmdlet并从this answer借用代码,您可以执行以下操作:

代码语言:javascript
复制
$zone  = 'example.com'
$range = '17.7.162.16', '17.7.162.238'

function Addr2UInt($addr) {
  $bytes = $addr.GetAddressBytes()
  [array]::Reverse($bytes)
  [BitConverter]::ToUInt32($bytes, 0)
}

$addrFrom = Addr2UInt ([Net.IPAddress]::Parse($range[0]))
$addrTo   = Addr2UInt ([Net.IPAddress]::Parse($range[1]))

Get-DNSServerResourceRecord $zone -RRType 'A' | ? {
  $addr = Addr2UInt $_.RecordData.IPv4Address;
  $addrFrom -le $addr -and $addr -le $addrTo
}

不能使用像-le这样的运算符比较IPAddress对象,但是由于IP(v4)地址基本上是32位数字,您可以将地址的字节转换为数字进行比较:

代码语言:javascript
复制
$bytes = $addr.GetAddressBytes()
(($bytes[0] * 256 + $bytes[1]) * 256 + $bytes[2]) * 256 + $bytes[3]

ToUInt32()方法提供了一种更优雅的方法来完成这种转换(这也使得发生了什么变得更加明显),但是由于该方法期望最低索引中的最低有效字节,因此必须首先反转数组。

为了方便起见,该函数只是包装了转换代码,因为我在脚本中的3个位置需要它。

票数 2
EN

Stack Overflow用户

发布于 2017-02-11 05:38:52

这是我找到的最好的方法

代码语言:javascript
复制
$Zone = YourDomain.local
Get-DnsServerResourceRecord -ZoneName $Zone -RRType A | Where-Object {$_.RecordData.ipv4address -like "192.168.39.*"}
票数 0
EN

Stack Overflow用户

发布于 2016-01-22 21:35:54

使用此GridView并筛选您的IP地址

代码语言:javascript
复制
$server = "Your_DNS_Server"
$record = Get-WmiObject -Namespace "root\MicrosoftDNS" -ComputerName $server -Class MicrosoftDNS_AType
$record | Select DomainName,RecordData,OwnerName | Sort-Object -Property {[System.Version]$_.RecordData} | Out-GridView

对IP地址进行排序由System.Version完成

代码语言:javascript
复制
[system.version]("17.7.162.238")
Major  Minor  Build  Revision
-----  -----  -----  --------
17     7      162     238
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22521283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档