Управление DNS-записями и зонами из PowerShell
Шпаргалка по модулю
DnsServer— просмотр, добавление и удаление записей и зон. Часто нужно при удалении контроллера домена (зачистка A/NS-записей мёртвого DC) и общем обслуживании DNS.
Просмотр
# все зоны на сервере
Get-DnsServerZone
# все записи зоны
Get-DnsServerResourceRecord -ZoneName "ad.example.com"
# только записи определённого типа
Get-DnsServerResourceRecord -ZoneName "ad.example.com" -RRType A
Get-DnsServerResourceRecord -ZoneName "ad.example.com" -RRType NS
# найти все записи, указывающие на конкретный IP (например, мёртвый DC)
Get-DnsServerResourceRecord -ZoneName "ad.example.com" |
Where-Object { $_.RecordData.IPv4Address -eq "10.0.0.5" }
Добавление записей
Add-DnsServerResourceRecordA -ZoneName "ad.example.com" -Name "srv-app" -IPv4Address "10.0.0.20"
Add-DnsServerResourceRecordCName -ZoneName "ad.example.com" -Name "wiki" -HostNameAlias "srv-app.ad.example.com"
Add-DnsServerResourceRecordPtr -ZoneName "0.0.10.in-addr.arpa" -Name "20" -PtrDomainName "srv-app.ad.example.com"
Удаление записей
# удалить A-запись конкретного хоста
Remove-DnsServerResourceRecord -ZoneName "ad.example.com" -RRType A -Name "srv-old" -Force
# удалить все записи мёртвого DC (A + NS), предварительно посмотрев список
Get-DnsServerResourceRecord -ZoneName "ad.example.com" |
Where-Object { $_.RecordData.IPv4Address -eq "10.0.0.5" } |
Remove-DnsServerResourceRecord -ZoneName "ad.example.com" -Force
Не забудьте про зону
_msdcs.<forest>и обратные (PTR) зоны — записи умершего DC остаются и там.
Зоны
# создать интегрированную в AD прямую зону
Add-DnsServerPrimaryZone -Name "new.example.com" -ReplicationScope Domain
# создать обратную зону
Add-DnsServerPrimaryZone -NetworkID "10.0.0.0/24" -ReplicationScope Domain
# форвардеры
Get-DnsServerForwarder
Set-DnsServerForwarder -IPAddress "8.8.8.8","1.1.1.1"
# удалить зону
Remove-DnsServerZone -Name "old.example.com" -Force
Диагностика
Clear-DnsServerCache -Force
Test-DnsServer -IPAddress 10.0.0.10 -ZoneName "ad.example.com"