如何以编程方式更新DNS记录

时间:2016-04-21 11:42:17

标签: powershell windows-7 dns windows-server-2008-r2

我正在尝试更新(我相信)服务器上的以下路径的DNS记录:

ServerName -> Forward Lookup Zones -> domain.com -> test

DNS记录名为test,且类型为Host(A)

我从here下载了DNSShell模块,并尝试更改数据'使用此命令的DNS记录列(包含IP地址):

Set-DNSRecord -Identity "test.domain.com"

但我收到了这个错误:

  

无法验证参数' Identity'的参数。论证" test.domain.com"与" ^ \\。 \ root \ MicrosoftDNS:MicrosoftDNS _"不匹配图案。提供与" ^ \\。 \ root \ MicrosoftDNS匹配的参数:MicrosoftDNS _"然后再次尝试命令。

所以我更新了Identity参数,如下所示:

Set-DNSRecord -Identity "\\Servername\root\MicrosoftDNS:MicrosoftDNS_"

但现在我看到了:

  

Set-DNSRecord:指定的参数超出了有效值的范围。参数名称:Path

当我尝试添加-Path时,它说没有这样的参数!有谁知道我需要在哪里添加DNS的test.domain.com部分来告诉命令要更新哪条记录?关于这个模块的文档对于这一部分是不完整的,我似乎无法找到任何替代方案。

我可以拨打Get-DNSRecord并查看我需要更新的记录,但是Set的所有尝试都被阻止,因为我不知道这些路径是如何构建的。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

您也可以使用Microsoft的DNS服务器的默认PowerShell模块,示例如下所示:

Add-DnsServerResourceRecordA -Name "recordname" -IPv4Address "192.168.0.0" -ZoneName "domain.com" -AllowUpdateAny -AgeRecord 

如果你之前需要删除,那么这样的事情应该有效:

Remove-DnsServerResourceRecord -ZoneName "domain.com" -Name "recordname" -RRType "A" -Force

答案 1 :(得分:1)

我设法通过使用你的经典CMD命令克服了这个问题:

dnscmd /RecordAdd domain.com recordname RecordType /Aging /OpenAcl A 192.168.0.0

这会添加一条新记录,即使存在具有相同名称(但不同IP)的另一条记录,也会这样做。

所以在我的情况下,我必须先使用dnscmd删除现有记录,然后才能添加新记录(因为我实际上只想更新现有记录的IP地址)。

删除dns记录的命令:

dnscmd /recorddelete domain.com recordname

可以找到更多详细信息here