Хорошо, только для добавления к этому с некоторой информацией о РЕАЛЬНОМ МИРЕ.
Я работал (я говорю, работал, как не протестировали под SP2 или новым R2), 2k8 и HyperV на моем ноутбуке, полностью исправленном к последним обновлениям Required & Recommended.
Отключение HyperV через начальную загрузку и также реестр, я смог подтвердить, что выполнение HyperV действительно влияет производительность машины:
Лас-Вегас 2 (3-й шутер от первого лица):
Конечно, это аппаратно-зависимо, но идет, показывают, что HyperV действительно облагает налогом некоторые системные ресурсы.
YMMV с Вашим тестированием производительности.
Оборудование:
Как Ваши навыки 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 для существующего записи. Выполнение PTRs должно быть весьма схожим; зафиксируйте мой foo-bar-baz handwave. Существует больше идей и указателей в этой статье 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)
}