在windows server中,可通过powershell的dnsserver模块高效创建和管理dns记录,支持a、aaaa、cname、mx、ptr等类型及批量操作、智能解析等高级功能。
在 windows server 中,用 powershell 创建和管理 dns 记录既高效又适合批量操作。关键在于使用 dnsserver 模块的命令,无需打开图形界面,支持脚本化、可复用、易集成到部署流程中。
确认前提与基础配置
确保已安装 DNS 服务器角色,并以管理员身份运行 PowerShell:
- 若未安装 DNS 角色,先执行:
Install-WindowsFeature -Name DNS -IncludeManagementTools - 确认 DNS 服务正在运行:
Get-Service DNS(状态应为 Running) - 确保你有目标区域(如
contoso.com)且已存在;若没有,可用Add-DnsServerPrimaryZone创建 - 账户需属于本地 Administrators 组或 DNSAdmins 组
常用记录类型的 PowerShell 创建方式
每种记录类型都有专用 cmdlet,语义清晰、参数明确,比通用 Add-DnsServerResourceRecord 更安全不易出错:
-
A 记录(IPv4 主机):
Add-DnsServerResourceRecordA -Name "web01" -ZoneName "contoso.com" -IPv4Address "192.168.10.50" -TimeToLive 01:00:00 -
AAAA 记录(IPv6 主机):
Add-DnsServerResourceRecordAAAA -Name "web01" -ZoneName "contoso.com" -IPv6Address "2001:db8::1" -TimeToLive 01:00:00 -
CNAME 记录(别名):
Add-DnsServerResourceRecordCName -Name "www" -ZoneName "contoso.com" -HostNameAlias "web01.contoso.com." -TimeToLive 01:00:00(注意末尾的点表示 FQDN) -
MX 记录(邮件交换器):
Add-DnsServerResourceRecordMX -Name "@" -ZoneName "contoso.com" -MailExchange "mail.contoso.com." -Preference 10 -TimeToLive 01:00:00 -
PTR 记录(反向解析):
需在反向查找区域(如10.168.192.in-addr.arpa)中操作:Add-DnsServerResourceRecordPtr -Name "50" -ZoneName "10.168.192.in-addr.arpa" -PtrDomainName "web01.contoso.com." -TimeToLive 01:00:00
批量添加与脚本化管理
把记录写入 CSV 文件后,可一键导入。例如,准备 records.csv:
HostName,IPAddress,ZoneName,RecordType app01,192.168.10.101,contoso.com,A db01,192.168.10.102,contoso.com,A mail,192.168.10.103,contoso.com,A
然后运行:
Import-Csv .\records.csv | ForEach-Object { Add-DnsServerResourceRecordA -Name $_.HostName -ZoneName $_.ZoneName -IPv4Address $_.IPAddress -TimeToLive 01:00:00 }- 删除某条 A 记录:
Remove-DnsServerResourceRecord -ZoneName "contoso.com" -Name "web01" -RecordType "A" -Force - 查询所有 A 记录:
Get-DnsServerResourceRecord -ZoneName "contoso.com" -RRType "A"
配合 DNS 策略实现智能解析(进阶场景)
当需按客户端子网返回不同 IP(如多地域负载分发),可结合 Zone Scope 和 Query Policy:
- 先定义子网:
Add-DnsServerClientSubnet -Name "CN-Subnet" -IPv4Subnet "10.20.30.0/24" - 创建 Zone Scope:
Add-DnsServerZoneScope -ZoneName "contoso.com" -Name "CN-Scope" - 在该 Scope 下添加记录:
Add-DnsServerResourceRecord -ZoneName "contoso.com" -A -Name "api" -IPv4Address "10.20.30.100" -ZoneScope "CN-Scope" - 绑定策略:
Add-DnsServerQueryResolutionPolicy -Name "CN-Policy" -Action ALLOW -ClientSubnet "eq,CN-Subnet" -ZoneScope "CN-Scope,1" -ZoneName "contoso.com"











