Я переношу зоны DNS (как прямые, так и обратные) из Bind в Windows DNS. Обратные записи на существующем сервере Bind не очень хорошо поддерживаются для статических зон, и я бы предпочел не просто импортировать все записи.
Однако я переместил все записи A в программу установки Windows и убедился, что они очищены. Теперь у меня есть пустые обратные зоны.
Мне интересно, есть ли относительно простой способ сообщить DNS-серверу (Windows 2008 R2, интегрированная Active Directory), либо через графический интерфейс, либо через строку cmd, чтобы продолжить и создать записи PTR для всех записей A.
Каковы ваши навыки работы с PowerShell? Это может быть довольно простой вопрос использования
$hosts = Get-WmiObject -ComputerName $DomainController -Namespace 'root\MicrosoftDNS' -Class MicrosoftDNS_AType
А затем с помощью CreateInstanceFromPropertyData метод:
foreach ($record in $hosts) {
$PTRRecord = [wmiclass]"\\$DomainController\root\MicrosoftDNS:MicrosoftDNS_PTRType
$PTRRecord.createInstanceFromPropertydata("foo","bar","baz")
}
Мой пример выше представляет собой отрывок (и обработанный) фрагмент сценария, который я использую для добавления записей CNAME для существующих записей A. Выполнение PTR должно быть очень похожим; исправь мою фу-бар-баз маху рукой. Есть больше идей и указателей в эта статья Scripting Guys.
Итак, следует более полный ответ. Обратите внимание, что он очень мало проверяет ошибки и слишком болтлив. Я взял большинство идей из Сценарист и ответ AndyN. Это ни в коем случае не идеально.
$server = "mydns.domain.name"
if (-not (Test-Connection -ComputerName $server)){Throw "DNS server not found"}
$srvr = $server -split "\."
$hosts = Get-WmiObject -ComputerName $server -Namespace 'root\MicrosoftDNS' -Class MicrosoftDNS_AType | where { $_.DomainName -eq "$($srvr[1]).$($srvr[2])" }
foreach ($record in $hosts) {
$resource = [WmiClass]"\\$($srvr[0])\root\MicrosoftDNS:MicrosoftDNS_ResourceRecord"
$computer = $record.OwnerName
$addr = $record.IPAddress -split "\."
$rzone = "$($addr[1]).$($addr[0]).in-addr.arpa"
$text = "$($addr[3]).$($addr[2]).$rzone IN PTR $computer"
write-host "$server, $rzone, $text"
$resource.CreateInstanceFromTextRepresentation($server, $rzone, $text)
}