Създавайте и управлявайте DNS записи и зони от PowerShell

Администраторът на DNS сървър на Windows може да използва старата добра програма за управление на сървъра, DNS зони и записи Dnscmd, или се възползвайте от модула PowerShell DNSServer. В тази статия ще разгледаме основната операция за масово създаване, промяна и изтриване на различни DNS записи и зони с помощта на PowerShell.

Съдържание:

  • Модул PowerShell - DNSServer
  • Управление на DNS зони от PowerShell
  • Управление на DNS записи чрез модула DNSServer
  • Как да добавите множество A / PTR записи към DNS зона с помощта на PowerShell?

Модул PowerShell - DNSServer

PowerShell модул DNSServer част от RSAT. В Windows 10 RSAT се инсталира отделно, а на Windows Server можете да инсталирате модула чрез Server Manager (Инструменти за администриране на роли -> Dns Server Tools).

Проверете дали системата има PoSh DNSServer модул:

Get-модул DNSServer -ListAvailable

Можете да изброите командите в него (във версията на модула на Windows Server 2012 R2 са налични повече от 100 команди):

Get-модул DNSServer

Управление на DNS зони от PowerShell

Ние изброяваме зоните на DNS сървъра (в нашия случай това е контролерът на домейна):

Get-DnsServerZone -ComputerName dc01

За да добавите нова първична DNS зона с име contoso.local, изпълнете командата:

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

Както можете да видите, е създадена първична DNS зона, която е интегрирана в Active Directory (isDsIntegrated = True).

Можете да създадете зона за обратно търсене (Lockup Zone):

Add-DnsServerPrimaryZone -NetworkId "192.168.1.0/24" -РепликацияScope домейн

За да синхронизирате новата зона с други DC в домейна, изпълнете командата:

Sync-DnsServerZone -passthru

Ние изброяваме записите в новата DNS зона (тя е празна):

Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local

За да изтриете зона, използвайте командата:

Remove-DnsServerZone -Name contoso.local -ComputerName dc01

Тази команда също ще изтрие всички съществуващи DNS записи в зоната..

Управление на DNS записи чрез модула DNSServer

За да създадете нов запис A в посочената DNS зона, използвайте командата:

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

За да добавите PTR запис в обратна зона, в предишната команда можете да добавите параметър -CreatePtr или ръчно създайте указател с командлета Add-DNSServerResourceRecordPTR:

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

За да добавите псевдоним (CNAME) за конкретен запис от A използвайте командата:

Add-DnsServerResourceRecordCName -ZoneName contoso.local -Име RDSFarm -HostNameAlias ​​rds1.contoso.local

За да промените IP адреса на този запис A, трябва да използвате доста сложна схема, защото не можете директно да промените IP адреса на DNS запис.

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

Сега променете свойството IPV4Address на обекта $ NewADNS

$ NewADNS.RecordData.IPv4Address = [System.Net.IPAddress] :: разбор ('192.168.1.230')

Сега променете IP адреса A на записа, като използвате Set-DnsServerResourceRecord:

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

Проверете дали IP адресът на записа е променен:

get-DnsServerResourceRecord -Name rds1 -ZoneName contoso.local

Можете да изброите DNS записи от същия тип, като посочите типа в аргумента -RRType. Избройте записите на CNAME в зоната:

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

Можете също така да използвате филтъра за различни параметри на DNS записи, използвайки Where-Object. Например, ние изброяваме записи А, които имат името rds в името.

Get-DnsServerResourceRecord -ZoneName contoso.local -RRType A | Къде-Object HostName -подобен "* rds *"

За да премахнете записи в DNS, използвайте командлета Remove-DnsServerResourceRecord..

Например, за да изтриете запис на CNAME, изпълнете:

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

За да изтриете запис от A:

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

За да премахнете PTR запис в обратната зона:

Remove-DnsServerResourceRecord -ZoneName “1.168.192.in-addr.arpa” -RRType “PTR” -Име “30”

Как да добавите множество A / PTR записи към DNS зона с помощта на PowerShell?

Да предположим, че трябва да създадете много A записи наведнъж в конкретна DNS директна зона за търсене. Можете да ги стартирате един по един с помощта на командата Add-DnsServerResourceRecordA, но е по-лесно и по-бързо да се пускат групово A записи от списък от файл.

Създайте текстов файл NewDnsRecords.txt с имената и IP адресите, които искате да получите. Форматът на файла е следният:

HostName, IPAddress

За да създадете записи в зоната contoso.local според данните от TXT / CSV файл, използвайте следния скрипт PowerShell:

Импортиране-CSV "C: \ PS \ NewDnsRecords.txt" | %
Add-DNSServerResourceRecordA -ZoneName contoso.local -Name $ _. "HostName" -IPv4Address $ _. "IPAddress"

Ако искате незабавно да запишете в обратната зона, добавете параметъра Add-DNSServerResourceRecordA към командата -CreatePtr.

Сега използвайте конзолата на DNS Manager (dnsmgmt.msc) или командата Get-DnsServerResourceRecord -ZoneName contoso.local уверете се, че всички записи на А са създадени успешно.

Ако трябва масово да създавате PTR записи в зоната за обратно търсене, създайте text / csv файл със следната структура

oktet, 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 .В-addr.arpa. 

След това стартирайте този скрипт:

Импортиране-CSV "C: \ PS \ NewDnsPTRRecords.txt" | %
Add-DNSServerResourceRecordPTR -ZoneName $ _. "ZoneName" -Name $ _. "Octet" -PTRDomainName $ _. "HostName"

Проверете дали PTR записи се появяват в посочената обратна DNS зона..