前述
这是 Windows DNS 迁移到 CoreDNS 过程中的一个子任务,主要目的是解决手动逐条迁移正向查找区域 A 记录和条件转发器的繁琐问题。最近,木子公司计划将 Windows DNS 上的正向查找区域 A 记录以及条件转发器中的所有域名记录迁移到 CoreDNS。为此,木子特别编写了一个 PowerShell 脚本来实现这一功能。
批量导出 Windows 正向查找区域中的 A 记录
要求:批量导出 Windows 正向查找区域中所有域名的 A 记录,并排除以 *.cc.com
结尾的域名(因为本身 AD 域所使用的域名正向解析仍在域服务器上管理)。
# 获取所有的 DNS 区域
$zones = Get-DnsServerZone | Where-Object { $_.IsAutoCreated -eq $false }
# 创建一个空的数组来存储结果
$results = @()
foreach ($zone in $zones) {
# 获取每个区域的 A 记录
$records = Get-DnsServerResourceRecord -ZoneName $zone.ZoneName -RRType "A"
foreach ($record in $records) {
# 获取完整的域名
$domain = "$($record.HostName).$($zone.ZoneName)"
# 跳过以 "*.cc.com" 结尾的域名
if ($domain -like "*.cc.com") {
continue
}
# 创建一个自定义的对象来存储域名和 IP 地址
$result = New-Object PSObject -Property @{
"Domain" = $domain.Replace("@."," ")
"IP_Address" = $record.RecordData.IPv4Address.IPAddressToString
}
# 将结果添加到数组中
$results += $result
}
}
# 将结果导出到一个 CSV 文件
$results | Export-Csv -Path "c:\A_record.csv" -NoTypeInformation
导出的 CSV 文件格式如下,只需要通过脚本再导入 CoreDNS Hosts 文件即可。
IP_Address | Domain |
---|---|
192.168.22.1 | a.rockylinux.cn |
192.168.22.2 | b.rockylinux.cn |
192.168.22.3 | c.rockylinux.cn |
批量导出 Windows 条件转发器所有域名及 IP
# 获取所有条件转发器
$forwarders = Get-DnsServerZone | Where-Object {$_.ZoneType -eq 'Forwarder'}
# 创建一个空数组来存储结果
$results = @()
foreach ($forwarder in $forwarders) {
# 获取每个条件转发器的域名和 IP 地址
$result = New-Object PSObject -Property @{
"Domain" = $forwarder.ZoneName
"MasterServers" = $forwarder.MasterServers -join "; "
}
# 将结果添加到数组中
$results += $result
}
# 将结果导出到一个 CSV 文件
$results | Export-Csv -Path "c:\forward.csv" -NoTypeInformation
导出的 CSV 文件格式如下,只需要通过脚本再导入 CoreDNS Corefile 文件即可。
IP_Address | Domain |
---|---|
8.8.8.8 | google.com |
8.8.4.4 | youtube.com |
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论