我知道 dnscmd /enumrecords,但是我想要做的是从该服务器上的每个区域导出所有记录。
我希望有一个简单的递归函数可以做到这一点。我们的服务器上有 100 个 DNS 区域,所以我不会手动为所有区域运行“dnscmd /enumrecords”。
答案1
我已使用以下步骤:Windows DNS 导出导入
我没有很多区域,但每个区域都有相当多的注册表。
更新(解决方案解释)
出口
为了您自己的安全,请导出所有区域:
C:\> dnscmd servername /enumrecords zonename @ /type A /detail > c:\filename.txt
导出注册表记录:
运行 REGEDIT 并导航到:(
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\DNS Server\Zones
右键单击键 ZONES 并导出到 .reg 文件)。或者
C:\> regedit /e c:\dns.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\DNS Server"
复制
*.dns
自:%windir%\system32\dns
将所有文件传输到新(目标)服务器
输入
创建一个测试区域,例如 testdomain.com。DNS 服务器需要创建一个区域,但您可以在导入后将其删除。
将
*.dns
文件复制%windir%\system32\dns
到新服务器双击
.reg
您创建的文件,将所有区域加载到新服务器的注册表中
(对于 Windows 2008:右键单击注册表文件并以管理员身份运行)重新启动 DNS 服务器服务
答案2
查看DNSShellPowerShell 插件。