Twórz i zarządzaj rekordami DNS i strefami z PowerShell

Administrator serwera DNS systemu Windows może użyć starego, dobrego narzędzia do zarządzania serwerem, strefami DNS i rekordami Dnscmd, lub skorzystaj z modułu PowerShell DNSServer. W tym artykule omówimy podstawowe operacje masowego tworzenia, modyfikowania i usuwania różnych rekordów DNS i stref za pomocą PowerShell.

Treść

  • Moduł PowerShell - DNSServer
  • Zarządzanie strefami DNS z PowerShell
  • Zarządzaj rekordami DNS za pomocą modułu DNSServer
  • Jak dodać wiele rekordów A / PTR do strefy DNS za pomocą PowerShell?

Moduł PowerShell - DNSServer

Moduł PowerShell DNSServer część RSAT. W systemie Windows 10 RSAT jest instalowany osobno, a w systemie Windows Server można zainstalować moduł za pomocą Menedżera serwera (Narzędzia do administrowania rolami -> Narzędzia serwera Dns).

Sprawdź, czy system ma moduł PoSh DNSServer:

Get-Module DNSServer -ListAvailable

Możesz wyświetlić listę poleceń (w wersji modułu w systemie Windows Server 2012 R2 dostępnych jest ponad 100 poleceń):

Get-Module DNSServer

Zarządzanie strefami DNS z PowerShell

Podajemy strefy na serwerze DNS (w naszym przypadku jest to kontroler domeny):

Get-DnsServerZone -ComputerName dc01

Aby dodać nową podstawową strefę DNS o nazwie contoso.local, uruchom polecenie:

Add-DnsServerPrimaryZone -Name contoso.local -ReplicationScope „Forest” -PassThru

Jak widać, utworzono podstawową strefę DNS zintegrowaną z usługą Active Directory (isDsIntegrated = True).

Możesz utworzyć strefę wyszukiwania wstecznego (Lockup Zone):

Add-DnsServerPrimaryZone -NetworkId „192.168.1.0/24” -ReplicationScope Domain

Aby zsynchronizować nową strefę z innymi kontrolerami domeny w domenie, uruchom polecenie:

Sync-DnsServerZone -passthru

Lista wpisów w nowej strefie DNS (jest pusta):

Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local

Aby usunąć strefę, użyj polecenia:

Remove-DnsServerZone -Name contoso.local -ComputerName dc01

To polecenie spowoduje również usunięcie wszystkich istniejących rekordów DNS w strefie..

Zarządzaj rekordami DNS za pomocą modułu DNSServer

Aby utworzyć nowy rekord A w określonej strefie DNS, użyj polecenia:

Add-DnsServerResourceRecordA -Name rds1 -IPv4Address 192.168.1.30 -ZoneName contoso.local -TimeToLive 01:00:00

Aby dodać rekord PTR w strefie odwrotnej, w poprzednim poleceniu możesz dodać parametr -CreatePtr lub ręcznie utwórz wskaźnik za pomocą polecenia cmdlet Add-DNSServerResourceRecordPTR:

Dodaj-DNSServerResourceRecordPTR -ZoneName 1.168.192.in-addr.arpa -Name 30 -PTRDomainName rds1.contoso.local

Aby dodać alias (CNAME) dla określonego rekordu A użyj polecenia:

Add-DnsServerResourceRecordCName -ZoneName contoso.local -Name RDSFarm -HostNameAlias ​​rds1.contoso.local

Aby zmienić adres IP tego rekordu A, musisz użyć dość skomplikowanego schematu, ponieważ nie można bezpośrednio zmienić adresu IP rekordu DNS.

$ NewADNS = get-DnsServerResourceRecord -Name rds1 -ZoneName contoso.local -ComputerName dc01
$ OldADNS = get-DnsServerResourceRecord -Name rds1 -ZoneName contoso.local -ComputerName dc01

Teraz zmień właściwość IPV4Address obiektu $ NewADNS

$ NewADNS.RecordData.IPv4Address = [System.Net.IPAddress] :: parsuj ('192.168.1.230')

Teraz zmień adres IP A wpisu za pomocą Set-DnsServerResourceRecord:

Set-DnsServerResourceRecord -NewInputObject $ NewADNS -OldInputObject $ OldADNS -ZoneName contoso.local -ComputerName dc01

Sprawdź, czy zmienił się adres IP A wpisu:

get-DnsServerResourceRecord -Name rds1 -ZoneName contoso.local

Możesz wyświetlić listę rekordów DNS tego samego typu, określając typ w argumencie -Rrtype. Wyświetl rekordy CNAME w strefie:

Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName contoso.local -RRType CNAME

Możesz także użyć filtru do różnych parametrów rekordów DNS za pomocą Where-Object. Na przykład wymieniamy rekordy A, które mają w nazwie frazę rds.

Get-DnsServerResourceRecord -ZoneName contoso.local -RRType A | Gdzie-obiekt HostName "* rds *"

Aby usunąć rekordy w DNS, użyj polecenia cmdlet Remove-DnsServerResourceRecord..

Na przykład, aby usunąć rekord CNAME, uruchom:

Remove-DnsServerResourceRecord -ZoneName contoso.local -RRType CName -Name RDSFarm

Aby usunąć rekord A:

Remove-DnsServerResourceRecord -ZoneName contoso.local -RRType A -Name rds1 -Force

Aby usunąć rekord PTR w strefie odwrotnej:

Remove-DnsServerResourceRecord -ZoneName „1.168.192.in-addr.arpa” -RRType „PTR” -Name „30”

Jak dodać wiele rekordów A / PTR do strefy DNS za pomocą PowerShell?

Załóżmy, że musisz utworzyć wiele rekordów A jednocześnie w określonej strefie bezpośredniego wyszukiwania DNS. Możesz je uruchomić jeden po drugim za pomocą polecenia Add-DnsServerResourceRecordA, ale łatwiej i szybciej jest masowo uruchamiać wpisy A z listy z pliku.

Utwórz plik tekstowy NewDnsRecords.txt z nazwami i adresami IP, które chcesz uzyskać. Format pliku jest następujący:

HostName, IPAddress

Aby utworzyć rekordy A w strefie contoso.local zgodnie z danymi z pliku TXT / CSV, użyj następującego skryptu PowerShell:

Import-CSV „C: \ PS \ NewDnsRecords.txt” | %
Dodaj-DNSServerResourceRecordA -ZoneName contoso.local -Name $ _. „Nazwa hosta” -IPv4Address $ _. „Adres IP”

Jeśli chcesz natychmiast nagrywać w strefie odwrotnej, dodaj parametr Add-DNSServerResourceRecordA do polecenia -CreatePtr.

Teraz za pomocą konsoli Menedżera DNS (dnsmgmt.msc) lub polecenia Get-DnsServerResourceRecord -ZoneName contoso.local upewnij się, że wszystkie rekordy A zostały utworzone pomyślnie.

Jeśli musisz masowo tworzyć rekordy PTR w strefie wyszukiwania wstecznego, utwórz plik tekstowy / csv o następującej strukturze

octet, hostName, zoneName 65, rds5.contoso.local, 1.168.192.in-addr.arpa 66, rds6.contoso.local, 1.168.192.in-addr.arpa 67, rds7.contoso.local, 1.168.192 .in-addr.arpa. 

Następnie uruchom ten skrypt:

Import-CSV „C: \ PS \ NewDnsPTRRecords.txt” | %
Dodaj-DNSServerResourceRecordPTR -ZoneName $ _. „ZoneName” -Name $ _. „Octet” -PTRDomainName $ _. „HostName”

Sprawdź, czy rekordy PTR pojawiają się w określonej strefie zwrotnego DNS..