Администраторът на 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 зона..