PowerShell批量添加DNS子域A记录提示区域未找到问题咨询
问题原因
AD集成DNS中,在主域(如mycompany.com)下新建的子域(如test)默认不是独立的DNS查找区域,而是父区域下的子节点。原脚本直接将-ZoneName参数设为test时,DNS服务会查找名为test的独立根级正向区域,自然会返回「区域未找到」的报错。
之前在主域下执行脚本正常,是因为mycompany.com本身就是独立的正向查找区域,参数能匹配到实际存在的区域对象。
解决方案
根据子域实际部署类型选择对应脚本即可:
场景1:子域为父区域下的内嵌子节点(当前匹配场景)
这种场景下test.mycompany.com没有被创建为独立区域,需要将-ZoneName指定为父域名称,同时在-Name参数中拼接子域前缀。
修正后的脚本如下:
# 请将ZoneName替换为实际的主AD域名 Import-Csv "C:\path\to\file" | ForEach-Object { Add-DnsServerResourceRecordA ` -Name "$($_.hostname).test" ` -ZoneName "mycompany.com" ` -IPv4Address $_.ipaddress # 需要同步创建PTR反向解析记录的话,在上一行参数末尾追加 -CreatePtr 即可 }
执行后生成的记录格式为server1.test.mycompany.com,完全匹配在test子域下添加记录的需求。
场景2:子域本身为独立AD集成区域
如果在DNS管理器中能看到test作为独立正向查找区域存在(和mycompany.com平级),报区域找不到的原因是脚本默认连接的DNS服务器没有加载该区域,只需添加-ComputerName参数指定持有该区域的DNS服务器/域控地址即可:
Import-Csv "C:\path\to\file" | ForEach-Object { Add-DnsServerResourceRecordA ` -Name $_.hostname ` -ZoneName "test" ` -IPv4Address $_.ipaddress ` -ComputerName "你的DNS服务器主机名或IP" }
结果验证
执行完脚本后,可以运行以下命令确认记录是否成功添加:
# 场景1验证命令:查询父区域下test子节点的所有A记录 Get-DnsServerResourceRecord -ZoneName "mycompany.com" -RRType A | Where-Object {$_.HostName -like "*.test"}
内容的提问来源于stack exchange,提问作者pod
相关产品推荐
相关产品推荐

