Một quản trị viên Windows có thể sử dụng công cụ CLI cũ tốt Dnscmd hoặc mô-đun DNSServer cho PowerShell để quản lý DNS zone và record. Trong bài viết này, chúng ta sẽ bao phủ các thao tác cơ bản về tạo hàng loạt, sửa đổi và xóa các DNS record hoặc zone khác nhau bằng PowerShell.
Mô-đun PowerShell DNSServer
Mô-đun DNSServer cho PowerShell là một phần của RSAT. Trên Windows 10, bạn sẽ phải cài đặt RSAT riêng biệt, và trên Windows Server, bạn có thể bật mô-đun bằng Server Manager GUI (Role Administration Tools → DNS Server Tools).

Đảm bảo mô-đun PowerShell DNSServer được cài trên máy tính của bạn:
Get-Module DNSServer –ListAvailable
Bạn có thể hiển thị danh sách lệnh trong nó (phiên bản mô-đun cho Windows Server 2016 có 134 cmdlet):
Get-Module DNSServer

Quản Lý DNS Zone với PowerShell
Hiển thị danh sách DNS zone trên máy chủ của bạn (trong trường hợp của chúng ta, nó là một bộ điều khiển miền):
Get-DnsServerZone –ComputerName dc01
Để thêm một primary DNS zone mới tên woshub.com, chạy lệnh này:
Add-DnsServerPrimaryZone -Name woshub.com -ReplicationScope "Forest" –PassThru
Như bạn thấy, primary DNS zone tích hợp vào Active Directory đã được tạo (isDsIntegrated=True).

Bạn có thể tạo Reverse Lookup Zone:
Add-DnsServerPrimaryZone -NetworkId "192.168.100.0/24" -ReplicationScope Domain
Để đồng bộ zone mới với các DC khác trong miền, chạy lệnh sau:
Sync-DnsServerZone –passthru
Hiển thị danh sách record trong DNS zone mới (nó trống):
Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local

Để xóa DNS zone, sử dụng lệnh:
Remove-DnsServerZone -Name woshub.com -ComputerName dc01
Nó cũng sẽ xóa tất cả các DNS record hiện có trong zone.
Quản Lý DNS Record với Mô-đun PowerShell DNSServer
Để tạo một A record mới cho host trong DNS zone được chỉ định, sử dụng lệnh này:
Add-DnsServerResourceRecordA -Name ber-rds1 -IPv4Address 192.168.100.33 -ZoneName woshub.com -TimeToLive 01:00:00
Để thêm PTR record vào Reverse Lookup Zone, bạn có thể thêm tham số –CreatePtr vào lệnh trước hoặc tạo con trỏ thủ công bằng cmdlet Add-DNSServerResourceRecordPTR:
Add-DNSServerResourceRecordPTR -ZoneName 100.168.192.in-addr.arpa -Name 33 -PTRDomainName ber-rds1.woshub.com
Để thêm alias (CNAME) cho A record cụ thể, chạy lệnh này:
Add-DnsServerResourceRecordCName -ZoneName woshub.com -Name Ber-RDSFarm -HostNameAlias ber-rds1.woshub.com
Để thay đổi (cập nhật) địa chỉ IP trong A record, bạn sẽ phải áp dụng một phương pháp khá phức tạp vì bạn không thể thay đổi địa chỉ IP của DNS record trực tiếp:
$NewADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -ComputerName dc01
$OldADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -ComputerName dc01
Sau đó thay đổi thuộc tính IPV4Address của đối tượng $NewADNS:
$NewADNS.RecordData.IPv4Address = [System.Net.IPAddress]::parse('192.168.100.133')
Thay đổi địa chỉ IP của A record bằng cmdlet Set-DnsServerResourceRecord:
Set-DnsServerResourceRecord -NewInputObject $NewADNS -OldInputObject $OldADNS -ZoneName woshub.com -ComputerName dc01
Đảm bảo rằng địa chỉ IP của A record đã thay đổi:
Get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com

Bạn có thể hiển thị danh sách DNS record cùng loại bằng cách sử dụng tham số –RRType . Hãy hiển thị danh sách CNAME record trong DNS zone được chỉ định:
Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName woshub.com -RRType CNAME

Bạn cũng có thể sử dụng bộ lọc bằng bất kỳ tham số DNS record nào sử dụng Where-Object. Ví dụ: để hiển thị danh sách A record chứa cụm từ rds trong hostname của chúng:
Get-DnsServerResourceRecord -ZoneName woshub.com -RRType A | Where-Object HostName -like "*rds*"

Để xóa DNS record, cmdlet Remove-DnsServerResourceRecord được sử dụng.
Ví dụ: để xóa một CNAME record, chạy lệnh:
Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType CName -Name Ber-RDSFarm
Để xóa một A DNS record:
Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType A -Name ber-rds1 –Force
Để xóa một PTR record từ Reverse Lookup Zone:
Remove-DnsServerResourceRecord -ZoneName “100.168.192.in-addr.arpa” -RRType “PTR” -Name “33”
Cách Tạo Nhiều A và PTR DNS Record từ File .CSV?
Giả sử, bạn muốn tạo nhiều A record cùng lúc trong DNS Forward Lookup Zone cụ thể. Bạn có thể thêm chúng một-by-one bằng cmdlet Add-DnsServerResourceRecordA, nhưng dễ dàng hơn là thêm A record hàng loạt từ file .CSV.
Tạo file văn bản NewDnsRecords.txt với tên và địa chỉ IP bạn muốn thêm vào DNS. Định dạng file txt như sau:
HostName, IPAddress

Để tạo A record trong zone woshub.com theo dữ liệu trong file TXT/CSV của bạn, sử dụng script PowerShell sau:
Import-CSV "C:\PS\NewDnsRecords.txt" | %{
Add-DNSServerResourceRecordA -ZoneName woshub.com -Name $_."HostName" -IPv4Address $_."IPAddress"
}
Nếu bạn muốn thêm record vào Reverse Lookup Zone cùng lúc, thêm tham số –CreatePtr vào lệnh Add-DNSServerResourceRecordA của bạn.
Sau đó sử dụng DNS Manager console (dnsmgmt.msc) hoặc Get-DnsServerResourceRecord -ZoneName woshub.local đảm bảo rằng tất cả DNS record đã được tạo thành công.

Nếu bạn muốn thêm PTR record vào Reverse Lookup Zone hàng loạt, tạo file văn bản hoặc CSV với cấu trúc sau:
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
Sau đó chạy script:
Import-CSV "C:\PS\NewDnsPTRRecords.txt" | %{
Add-DNSServerResourceRecordPTR -ZoneName $_."zoneName" -Name $_."octet" -PTRDomainName $_."hostName"
}
Đảm bảo rằng PTR record của bạn xuất hiện trong DNS Reverse Lookup Zone.