在准备启用 DNS 老化/清理时,我们注意到的一点是我们的打印机(有 1000 多台)和 DNS 无法更新。所有区域都集成了 Active Directory。我正在尝试找出将它们设置为静态记录的最佳方法。所有打印机都以 DNS 中名称的相同前缀开头(xxx...102、xxx...103、xxx...104)。我正在考虑两个选项。
答:) 将所有打印机记录转换为静态记录,而无需手动编辑每条记录。有没有办法可以对打印机前缀进行过滤,并将其从 DNSCMD 转换为静态记录?
B:) 导出所有与带有打印机前缀的过滤器匹配的打印机记录,然后将它们作为静态记录导入?
我们希望得到有关这些选项或其他可行替代方案的指导。当然,我们也欢迎提供任何有关为大型企业启用 DNS 老化/清理的其他建议。
谢谢。
答案1
@Massimo 部分正确,因为您可以使用Set-DnsServerResourceRecord
它来实现这一点,但您不能直接设置时间戳,因为该属性被视为只读。相反,您所做的任何更改都会导致记录变为静态。
以下是您可以采取的方法的示例:
$dnsServer = 'MyDC01'
$zone = 'contoso.com'
$records = Get-DnsServerResourceRecord -ComputerName $dnsServer -ZoneName $zone -RRType A | Where-Object { $_.HostName -like 'printer*' }
$records | ForEach-Object {
Set-DnsServerResourceRecord -OldInputObject $_ -NewInputObject $_ -ComputerName $dnsServer -ZoneName $zone
}
由于输入和输出对象是相同的,这应该是非破坏性的,但要小心,要备份!
关于拾荒
如果您的打印机记录已经是动态的(可能是因为它们是通过 DHCP 配置的,并且 DHCP 正在刷新它们),那么您可能不应该将它们设为静态。如果 DHCP 和动态 DNS 正常工作,那么日期将会更新,并且清除不会损害它们。
如果打印机是 DHCP,但时间戳未更新,那么您应该在启用清除之前找出原因并解决问题。
如果必须将这些设为静态,则应为这些范围或那些单独的保留配置 DHCP,以便不动态更新 DNS。
关于时间戳的说明
您必须在 AD 集成区域上启用清理功能,然后才能复制时间戳。如果日期看起来全都错误且不一致,您可能会遇到这种情况。在区域上启用清理功能不是清除记录(该设置在服务器上)。在实际设置清除运行之前,我已经在区域上启用了清除 2 个月,这样我就可以确保时间戳一致且正在更新。
答案2
在 Windows DNS 中,记录定义为静态如果没有时间戳;因此,您要寻找的答案是“获取所有这些记录并将其时间戳设置为 0”。
这可以通过 Windows Server 2012 上的 PowerShell 轻松实现,它引入了用于处理 DNS 的一系列 PowerShell cmdlet;你要找的是获取 DNS 服务器资源记录和设置 DNS 服务器资源记录,它应该允许您构建如下脚本:
- Get all records of type A for your DNS zone
- Filter them to select the ones starting with the prefix you want
- For each record:
- Set the timestamp to 0
- Save the record
请注意,您不需要 DNS 服务器运行 Windows Server 2012 即可实现此功能;您只需要在 WS2012 或 WS2012R2 机器上运行该脚本即可。在紧急情况下,即使是运行 Windows 8 或 Windows 8.1 的计算机也可以工作,但您需要在其上安装远程服务器管理工具。