ผู้ดูแลระบบ Windows สามารถใช้เครื่องมือ CLI เก่าๆ ที่ดี Dnscmd หรือโมดูล DNSServer สำหรับ PowerShell เพื่อจัดการ DNS zones และ records ในบทความนี้ เราจะครอบคลุมการดำเนินการพื้นฐานของการสร้าง แก้ไข และลบ DNS records หรือ zones ต่างๆ จำนวนมากโดยใช้ PowerShell
DNSServer PowerShell Module
โมดูล DNSServer สำหรับ PowerShell เป็นส่วนหนึ่งของ RSAT บน Windows 10 คุณจะต้องติดตั้ง RSAT แยกต่างหาก และบน Windows Server คุณสามารถเปิดใช้งานโมดูลผ่าน Server Manager GUI (Role Administration Tools → DNS Server Tools)

ตรวจสอบให้แน่ใจว่าโมดูล DNSServer PowerShell ติดตั้งบนคอมพิวเตอร์ของคุณ:
Get-Module DNSServer –ListAvailable
คุณสามารถแสดงรายการคำสั่งในมันได้ (โมดูลเวอร์ชันสำหรับ Windows Server 2016 มี 134 cmdlets):
Get-Module DNSServer

จัดการ DNS Zones ด้วย PowerShell
แสดงรายการ DNS zones บนเซิร์ฟเวอร์ของคุณ (ในกรณีของเราเป็นโดเมนคอนโทรลเลอร์):
Get-DnsServerZone –ComputerName dc01
เพื่อเพิ่ม primary DNS zone ใหม่ชื่อ woshub.com ให้รันคำสั่งนี้:
Add-DnsServerPrimaryZone -Name woshub.com -ReplicationScope "Forest" –PassThru
如你所見 primary DNS zone ที่ integrated เข้ากับ Active Directory ถูกสร้าง (isDsIntegrated=True)

คุณสามารถสร้าง Reverse Lookup Zone:
Add-DnsServerPrimaryZone -NetworkId "192.168.100.0/24" -ReplicationScope Domain
เพื่อซิงโครไนซ์ zone ใหม่กับ DCs อื่นๆ ในโดเมน ให้รันคำสั่งต่อไปนี้:
Sync-DnsServerZone –passthru
แสดงรายการ records ใน DNS zone ใหม่ (ว่างเปล่า):
Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local

เพื่อลบ DNS zone ให้ใช้คำสั่ง:
Remove-DnsServerZone -Name woshub.com -ComputerName dc01
มันจะลบ DNS records ที่มีอยู่ทั้งหมดใน zone ด้วย
การจัดการ DNS Records ด้วยโมดูล DNSServer PowerShell
เพื่อสร้าง A record ใหม่สำหรับโฮสต์ใน DNS zone ที่ระบุ ให้ใช้คำสั่งนี้:
Add-DnsServerResourceRecordA -Name ber-rds1 -IPv4Address 192.168.100.33 -ZoneName woshub.com -TimeToLive 01:00:00
เพื่อเพิ่ม PTR record ไปยัง Reverse Lookup Zone คุณสามารถเพิ่มพารามิเตอร์ –CreatePtr ไปยังคำสั่งก่อนหน้านี้ หรือสร้าง pointer ด้วยตนเองโดยใช้ cmdlet Add-DNSServerResourceRecordPTR:
Add-DNSServerResourceRecordPTR -ZoneName 100.168.192.in-addr.arpa -Name 33 -PTRDomainName ber-rds1.woshub.com
เพื่อเพิ่ม alias (CNAME) สำหรับ A record เฉพาะ ให้รันคำสั่งนี้:
Add-DnsServerResourceRecordCName -ZoneName woshub.com -Name Ber-RDSFarm -HostNameAlias ber-rds1.woshub.com
เพื่อเปลี่ยน (อัปเดต) ที่อยู่ IP ใน A record คุณจะต้องใช้วิธีที่ซับซ้อนค่อนข้าง เนื่องจากคุณไม่สามารถเปลี่ยนที่อยู่ IP ของ DNS record โดยตรงได้:
$NewADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -ComputerName dc01
$OldADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -ComputerName dc01
จากนั้นเปลี่ยนคุณสมบัติ IPV4Address ของออบเจ็กต์ $NewADNS:
$NewADNS.RecordData.IPv4Address = [System.Net.IPAddress]::parse('192.168.100.133')
เปลี่ยนที่อยู่ IP ของ A record โดยใช้ cmdlet Set-DnsServerResourceRecord:
Set-DnsServerResourceRecord -NewInputObject $NewADNS -OldInputObject $OldADNS -ZoneName woshub.com -ComputerName dc01
ตรวจสอบให้แน่ใจว่าที่อยู่ IP ของ A record เปลี่ยนแล้ว:
Get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com

คุณสามารถแสดงรายการ DNS records ของประเภทเดียวกันโดยใช้พารามิเตอร์ –RRType มาแสดงรายการ CNAME records ใน DNS zone ที่ระบุ:
Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName woshub.com -RRType CNAME

คุณยังสามารถใช้ตัวกรองโดยพารามิเตอร์ DNS record ใดๆ โดยใช้ Where-Object ตัวอย่างเช่น เพื่อแสดงรายการ A records ที่มีวลี rds ใน hostname ของพวกเขา:
Get-DnsServerResourceRecord -ZoneName woshub.com -RRType A | Where-Object HostName -like "*rds*"

เพื่อลบ DNS records ให้ใช้ cmdlet Remove-DnsServerResourceRecord
ตัวอย่างเช่น เพื่อลบ CNAME record ให้รันคำสั่ง:
Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType CName -Name Ber-RDSFarm
เพื่อลบ A DNS record:
Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType A -Name ber-rds1 –Force
เพื่อลบ PTR record จาก Reverse Lookup Zone:
Remove-DnsServerResourceRecord -ZoneName “100.168.192.in-addr.arpa” -RRType “PTR” -Name “33”
วิธีสร้าง A และ PTR DNS Records หลายรายการจากไฟล์ .CSV
สมมติว่าคุณต้องการสร้าง A records หลายรายการพร้อมกันใน DNS Forward Lookup Zone เฉพาะ คุณสามารถเพิ่มพวกเขาทีละรายการโดยใช้ cmdlet Add-DnsServerResourceRecordA แต่จะง่ายกว่าที่จะเพิ่ม A records จำนวนมากจากไฟล์ .CSV
สร้างไฟล์ข้อความ NewDnsRecords.txt พร้อมชื่อและที่อยู่ IP ที่คุณต้องการเพิ่มเข้าไปใน DNS รูปแบบ txt file มีดังนี้:
HostName, IPAddress

เพื่อสร้าง A records ใน zone woshub.com ตามข้อมูลในไฟล์ TXT/CSV ของคุณ ให้ใช้สคริปต์ PowerShell ต่อไปนี้:
Import-CSV "C:\PS\NewDnsRecords.txt" | %{
Add-DNSServerResourceRecordA -ZoneName woshub.com -Name $_."HostName" -IPv4Address $_."IPAddress"
}
หากคุณต้องการเพิ่ม records ไปยัง Reverse Lookup Zone พร้อมกัน ให้เพิ่มพารามิเตอร์ –CreatePtr ไปยังคำสั่ง Add-DNSServerResourceRecordA ของคุณ
จากนั้นใช้ DNS Manager console (dnsmgmt.msc) หรือ Get-DnsServerResourceRecord -ZoneName woshub.local ตรวจสอบให้แน่ใจว่าทุก DNS records ถูกสร้างสำเร็จ

หากคุณต้องการเพิ่ม PTR records ไปยัง Reverse Lookup Zone จำนวนมาก สร้างไฟล์ข้อความหรือ CSV ที่มีโครงสร้างดังนี้:
octet,hostName,zoneName 102,ber-rds2.woshub.com,100.168.192.in-addr.arpa 103,ber-rds3.woshub.com,100.168.192.in-addr.arpa 104,ber-rds4.woshub.com,100.168.192.in-addr.arpa 105,ber-rds5.woshub.com,100.168.192.in-addr.arpa
จากนั้นรันสคริปต์:
Import-CSV "C:\PS\NewDnsPTRRecords.txt" | %{
Add-DNSServerResourceRecordPTR -ZoneName $_."zoneName" -Name $_."octet" -PTRDomainName $_."hostName"
}
ตรวจสอบให้แน่ใจว่า PTR records ของคุณปรากฏใน DNS Reverse Lookup Zone