我需要生成指定子网的所有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
}发布于 2014-03-21 00:21:21
使用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
}不能使用像-le这样的运算符比较IPAddress对象,但是由于IP(v4)地址基本上是32位数字,您可以将地址的字节转换为数字进行比较:
$bytes = $addr.GetAddressBytes()
(($bytes[0] * 256 + $bytes[1]) * 256 + $bytes[2]) * 256 + $bytes[3]ToUInt32()方法提供了一种更优雅的方法来完成这种转换(这也使得发生了什么变得更加明显),但是由于该方法期望最低索引中的最低有效字节,因此必须首先反转数组。
为了方便起见,该函数只是包装了转换代码,因为我在脚本中的3个位置需要它。
发布于 2017-02-11 05:38:52
这是我找到的最好的方法
$Zone = YourDomain.local
Get-DnsServerResourceRecord -ZoneName $Zone -RRType A | Where-Object {$_.RecordData.ipv4address -like "192.168.39.*"}发布于 2016-01-22 21:35:54
使用此GridView并筛选您的IP地址
$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 238https://stackoverflow.com/questions/22521283
复制相似问题