PowerShell通过Import-Csv批量写入DNS记录失败如何解决
问题解决方法
原有脚本错误原因
- 变量引用错误:原有脚本将
$Name、$Data赋值为固定字符串"Name"、"Data",没有读取CSV每行对应的实际主机名、IP值 - 参数缺失/错误:
Add-DnsServerResourceRecord创建A记录必须指定-A参数标识记录类型,ZoneName参数需要填写你实际配置好的DNS主区域名称,不是CSV的列名 - 语法错误:第二段脚本循环未闭合,参数名拼写错误,还误将整个CSV数组传给了IP参数
可直接运行的正确脚本
先将脚本中的your-domain.com替换为你实际的DNS主区域名称,CSV文件路径替换为你本地的实际路径,首次运行默认开启-WhatIf测试,确认输出符合预期后删除该参数即可实际创建记录:
# 导入CSV记录 $dnsRecords = Import-Csv -Path "C:\records\powershelltest\fqdns.domain.com.csv" # 替换为你实际的DNS主区域名 $zoneName = "your-domain.com" foreach ($record in $dnsRecords) { # 去除CSV值两侧的多余空格避免异常 $hostName = $record.Name.Trim() $ipAddr = $record.Data.Trim() Add-DnsServerResourceRecord -A ` -ZoneName $zoneName ` -Name $hostName ` -IPv4Address $ipAddr ` -PassThru ` -WhatIf }
补充注意事项
- 如果CSV的
Name字段已经是完整FQDN(例如another-host.your-domain.com),可以将-Name参数的值替换为$hostName.Replace(".$zoneName",""),避免重复拼接区域后缀 - 运行脚本需要持有DNS服务器的管理权限,建议先拿1-2条测试记录验证逻辑无误后再全量执行
内容的提问来源于stack exchange,提问作者user14273702
相关产品推荐
相关产品推荐

