Vytvářejte a spravujte záznamy a zóny DNS z prostředí PowerShell

Správce serveru Windows DNS může pomocí starého dobrého nástroje spravovat server, zóny DNS a záznamy Dnscmd, nebo využijte modul PowerShell DNSServer. V tomto článku se budeme zabývat základní operací hromadného vytváření, úprav a mazání různých záznamů DNS a zón pomocí prostředí PowerShell.

Obsah:

  • Modul PowerShell - DNSServer
  • Správa zón DNS z prostředí PowerShell
  • Spravujte záznamy DNS pomocí modulu DNSServer
  • Jak přidat více záznamů A / PTR do zóny DNS pomocí prostředí PowerShell?

Modul PowerShell - DNSServer

Modul PowerShell DNSServer součást RSAT. Ve Windows 10 je RSAT nainstalován samostatně a na Windows Server můžete nainstalovat modul pomocí Správce serveru (Nástroje pro správu rolí -> Nástroje serveru DNS)..

Zkontrolujte, zda systém obsahuje modul PoSh DNSServer:

Získejte modul DNSServer -ListDostupný

Můžete v něm uvést příkazy (ve verzi modulu v systému Windows Server 2012 R2 je k dispozici více než 100 příkazů):

Get-Module DNSServer

Správa zón DNS z prostředí PowerShell

Uvádíme zóny na serveru DNS (v našem případě je to řadič domény):

Get-DnsServerZone -ComputerName dc01

Chcete-li přidat novou primární zónu DNS s názvem contoso.local, spusťte příkaz:

Add-DnsServerPrimaryZone -Name contoso.local -ReplicationScope "Forest" -PassThru

Jak vidíte, byla vytvořena primární zóna DNS, která je integrována do služby Active Directory (isDsIntegrated = True).

Můžete vytvořit zónu zpětného vyhledávání (Lockup Zone):

Add-DnsServerPrimaryZone -NetworkId "192.168.1.0/24" -ReplicationScope Domain

Chcete-li synchronizovat novou zónu s ostatními řadiči domény v doméně, spusťte příkaz:

Sync-DnsServerZone -passthru

Uvádíme položky v nové zóně DNS (je prázdná):

Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local

Chcete-li odstranit zónu, použijte příkaz:

Remove-DnsServerZone -Name contoso.local -ComputerName dc01

Tento příkaz také odstraní všechny existující záznamy DNS v zóně..

Spravujte záznamy DNS pomocí modulu DNSServer

Chcete-li vytvořit nový záznam A v určené zóně DNS, použijte příkaz:

Add-DnsServerResourceRecordA - jméno rds1 -IPv4Address 192.168.1.30 -ZoneName contoso.local -TimeToLive 01:00:00

Chcete-li přidat záznam PTR v reverzní zóně, můžete v předchozím příkazu přidat parametr -CreatePtr nebo ručně vytvořte ukazatel pomocí cmdlet Add-DNSServerResourceRecordPTR:

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

Přidání aliasu (CNAME) pro konkrétní záznam A použijte příkaz:

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

Chcete-li změnit IP adresu tohoto záznamu A, musíte použít poněkud komplikované schéma, protože nemůžete přímo změnit IP adresu záznamu DNS.

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

Nyní změňte vlastnost IPV4Address objektu $ NewADNS

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

Nyní změňte IP adresu A položky pomocí Set-DnsServerResourceRecord:

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

Zkontrolujte, zda se změnila IP adresa A záznamu:

get-DnsServerResourceRecord -Name rds1 -ZoneName contoso.local

Záznamy DNS stejného typu můžete uvést zadáním typu v argumentu -Rrtype. Seznam záznamů CNAME v zóně:

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

Filtr můžete také použít pro různé parametry záznamů DNS pomocí Where-Object. Například uvedeme záznamy A, které mají v názvu frázi rds.

Get-DnsServerResourceRecord -ZoneName contoso.local -RRType A | Název-hostitele-host-like "* rds *"

Chcete-li odstranit záznamy v DNS, použijte cmdlet Remove-DnsServerResourceRecord..

Chcete-li například odstranit záznam CNAME, spusťte:

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

Odstranění záznamu A:

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

Odstranění záznamu PTR v reverzní zóně:

Remove-DnsServerResourceRecord -ZoneName “1.168.192.in-addr.arpa” -RRType “PTR” - jméno “30”

Jak přidat více záznamů A / PTR do zóny DNS pomocí prostředí PowerShell?

Předpokládejme, že musíte vytvořit mnoho záznamů A najednou v konkrétní zóně přímého vyhledávání DNS. Můžete je spustit jeden po druhém pomocí příkazu Add-DnsServerResourceRecordA, ale hromadné spouštění položek A ze seznamu ze souboru je snazší a rychlejší.

Vytvořte textový soubor NewDnsRecords.txt se jmény a adresami IP, které chcete získat. Formát souboru je následující:

HostName, IPAddress

Chcete-li vytvořit záznamy A v kontoso.local zóně podle dat ze souboru TXT / CSV, použijte následující skript PowerShell:

Import-CSV "C: \ PS \ NewDnsRecords.txt" | %
Add-DNSServerResourceRecordA -ZoneName contoso.local -Name $ _. "HostName" -IPv4Address $ _. "IPAddress"

Pokud chcete okamžitě zaznamenat v reverzní zóně, přidejte do příkazu parametr Add-DNSServerResourceRecordA. -CreatePtr.

Nyní pomocí konzoly Správce DNS (dnsmgmt.msc) nebo příkazu Get-DnsServerResourceRecord -ZoneName contoso.local ujistěte se, že jsou všechny záznamy A vytvořeny úspěšně.

Pokud potřebujete masivně vytvářet záznamy PTR v zóně zpětného vyhledávání, vytvořte textový / csv soubor s následující strukturou

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. 

Poté spusťte tento skript:

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

Ověřte, že se záznamy PTR objevují v určené reverzní zóně DNS..