Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

สร้างและจัดการ DNS Zones และ Records ด้วย PowerShell

ผู้ดูแลระบบ 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)

สร้างและจัดการ DNS Zones และ Records ด้วย PowerShell

ตรวจสอบให้แน่ใจว่าโมดูล DNSServer PowerShell ติดตั้งบนคอมพิวเตอร์ของคุณ:

Get-Module DNSServer –ListAvailable

คุณสามารถแสดงรายการคำสั่งในมันได้ (โมดูลเวอร์ชันสำหรับ Windows Server 2016 มี 134 cmdlets):

Get-Module DNSServer

สร้างและจัดการ DNS Zones และ Records ด้วย PowerShell

จัดการ 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)

สร้างและจัดการ DNS Zones และ Records ด้วย PowerShell

คุณสามารถสร้าง 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 Zones และ Records ด้วย PowerShell

เพื่อลบ 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 Zones และ Records ด้วย PowerShell

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

Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName woshub.com -RRType CNAME

สร้างและจัดการ DNS Zones และ Records ด้วย PowerShell

คุณยังสามารถใช้ตัวกรองโดยพารามิเตอร์ DNS record ใดๆ โดยใช้ Where-Object ตัวอย่างเช่น เพื่อแสดงรายการ A records ที่มีวลี rds ใน hostname ของพวกเขา:

Get-DnsServerResourceRecord -ZoneName woshub.com -RRType A | Where-Object HostName -like "*rds*"

สร้างและจัดการ DNS Zones และ Records ด้วย PowerShell

เพื่อลบ 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

สร้างและจัดการ DNS Zones และ Records ด้วย PowerShell

เพื่อสร้าง 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 ถูกสร้างสำเร็จ

สร้างและจัดการ DNS Zones และ Records ด้วย PowerShell

หากคุณต้องการเพิ่ม 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