最近由于公网映射的IP需要更换,有一批DNS记录需要修改。对于使用Windows管理的DNS记录,可以使用Powershell批量导出记录更新后再批量修改。
首先使用Powershell将DNS服务器上test.local这个区域里的所有A记录导出
Get-DnsServerResourceRecord -ComputerName ITM -ZoneName test.local | Where-Object {$_.RecordType -eq "A" } | Select-Object HostName, RecordType, @{Name="RecordData"; Expression={$_.RecordData.IPv4Address[0]}} | export-csv C:\Users\qishine\Desktop\dns\record.csv
导出的CSV文件是这个样子的。
接下去修改一下这个CSV文件,删除首行。并且新增一列newip,写入新的IP。不需要修改的记录可以删除或者留着不写新IP就行。
编辑后的CSV文件是这样的。
然后导入CSV文件并更新记录
Import-Csv C:\Users\qishine\Desktop\DNS\newrecord.csv | foreach {
$old = Get-DnsServerResourceRecord -ZoneName test.local -Name $_.hostname
$new = $old.Clone()
$new.RecordData.IPv4Address = [System.Net.IPAddress]::parse($_.newip)
Set-DnsServerResourceRecord -NewInputObject $new -OldInputObject $old -ZoneName test.local
}
因为有2条记录是没有更新的,所以会有报错。这个不影响其它记录的修改。如果CSV文件只保留需要修改记录的信息,那么是不会有报错的。
至此,DNS记录的更新就完成了。