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..