2016-04-21 68 views
1

我試圖更新DNS記錄是在(我相信)服務器上的以下路徑:如何更新DNS記錄通過編程

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

當DNS記錄被稱爲test,並類型Host(A)

我從here下載的DNSShell模塊,並試圖用這個命令更改DNS記錄的「數據」列(其中包含一個IP地址):

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

但我得到這個錯誤:

Cannot validate argument on parameter 'Identity'. The argument "test.domain.com" does not match the "^\\.\root\MicrosoftDNS:MicrosoftDNS_" pattern. Supply an argument that matches "^\\.\root\MicrosoftDNS:MicrosoftDNS_" and try the command again.

所以我更新了Identity參數如下:

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

但現在我看到:

Set-DNSRecord : Specified argument was out of the range of the valid values. Parameter name: Path

當我嘗試添加-Path,它說,沒有這樣的參數!有誰知道我需要在哪裏添加DNS的test.domain.com部分來告訴命令要更新哪條記錄?這個模塊的文檔對於這部分是不完整的,我似乎找不到任何替代品。

我可以撥打Get-DNSRecord並查看我需要更新的記錄,但任何對Set的嘗試都會被阻止,因爲我不知道如何構建這些路徑。

任何幫助,非常感謝。

回答

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

3

您可以使用也默認PowerShell的模塊,用於從Microsoft DNS服務器,例如會再看看這樣的事情:

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

如果你需要這樣的事情之前清除應該工作:

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

感謝您添加此 - 不幸的是,這隻適用於Windows 8,8。1,10和Server 2012 R2,所以我不能使用它,但這可能會對其他人有所幫助 – Bassie