批量修改DNS记录的TTL值

最近有个需求,需要修改Windows DNS服务器上区域下所有A记录的TTL值。原先默认的TTL是1小时。也就是说,其它DNS服务器会缓存查询到的记录1个小时。对于近期需要大量修改记录的情况来说这样生效时间会比较长。所以最好将TTL先改短,然后再更新记录。

查看记录的TTL值需要打开DNS管理单元的高级功能视图。对于区域里的后续记录可以修改区域属性里的TTL值,这样以后创建出来的记录就都是新的TTL了。如果看不到图,请点我

如果修改了Minimum TTL,以后所有的新建记录也会一起变。

对于由Netlogon服务注册的DNS记录,也就是SRV记录。可以通过修改这个注册表键值来改变默认的TTL

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DefaultRegistrationTTL

这个对于目前我遇到的问题没有用。所以,必须使用命令来批量修改记录。在此,选用powershell来完成。先用这条命令来看看当前区域中A记录的信息。

Get-DnsServerResourceRecord -ComputerName DC-232 -ZoneName "contoso.lab" -RRType "A"

然后使用以下脚本来修改所有的记录。

$OldObj=Get-DnsServerResourceRecord -ComputerName DC-232 -ZoneName "contoso.lab" -RRType "A"
foreach ($record in $OldObj)
{
$NewObj = $record.Clone()
$NewObj.TimeToLive = [System.TimeSpan]::FromMinutes(20)
Set-DnsServerResourceRecord -ComputerName DC-232 -NewInputObject $NewObj -OldInputObject $record -ZoneName "contoso.lab" -PassThru
$NewObj=$Null
$record=$Null
}

脚本会逐条修改TTL值,如果记录比较多的话耐心等待完成就可以了。

发布了56 篇原创文章 · 获赞 2 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qishine/article/details/103278735