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

时间:2014-03-20 00:48:08

标签: powershell dns

我需要为指定的子网生成所有DNS记录的列表。有没有办法使用powershell DNS cmdlet,DNSCMD或其他任何东西,这不是我目前使用的非常慢的方式?

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

$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。

$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
}

3 个答案:

答案 0 :(得分:1)

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

$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
}

IPAddress个对象无法使用-le之类的运算符进行比较,但由于IP(v4)地址基本上是32位数字,因此您可以将地址的字节转换为数字比较:

$bytes = $addr.GetAddressBytes()
(($bytes[0] * 256 + $bytes[1]) * 256 + $bytes[2]) * 256 + $bytes[3]

ToUInt32()方法提供了一种更优雅的方式来进行此转换(也更明显地发生了什么),但由于该方法需要最低索引处的最低有效字节数组必须先颠倒过来。

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

答案 1 :(得分:0)

这是我找到的最佳方式

$Zone = YourDomain.local
Get-DnsServerResourceRecord -ZoneName $Zone -RRType A | Where-Object {$_.RecordData.ipv4address -like "192.168.39.*"}

答案 2 :(得分:-1)

对您的IP地址使用此GridView和过滤器

$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]

完成
[system.version]("17.7.162.238")
Major  Minor  Build  Revision
-----  -----  -----  --------
17     7      162     238