簡體   English   中英

使用 powershell 更新 DNS 記錄

[英]Update DNS records with powershell

我想編寫一個 powershell 腳本,它將更新 DNS A 記錄列表的名稱。

但是,我還需要更新與 DNS 記錄對應的 PTR 記錄。 據我所知,沒有參數可以自動為我執行此操作,我決定編寫一個單獨的腳本來處理 Ptr 記錄。

我不確定更新指針記錄 PtrDomainName 的正確方法是什么(參見下面的代碼)。 我設法找到有關更改 IP 和 TTL(都在我的代碼中)的方法的信息,但名稱丟失了。

$records = Get-Content .\ptr_records.txt

foreach ($record in $records){
    #modify the records
    $OldObj = Get-DnsServerResourceRecord -ZoneName 10.in-addr.arpa -RRType Ptr | Where-Object {$_.RecordData.PtrDomainName -like $record }
    $NewObj = $OldObj.Clone()
    ###below line modifies time to live
    $NewObj.TimeToLive = [System.TimeSpan]::FromHours(2) 
    ###below line modifies ip
    $NewObj.RecordData.IPv4Address = [ipaddress]'8.8.8.8'
    ###how do i modify the record data?????
    $NewObj.RecordData= ??? 
Set-DnsServerResourceRecord -NewInputObject $NewObj -OldInputObject $OldObj -ZoneName "10.in-addr.arpa" -PassThru
    
}

這里還有一些 powershell output:

在下面的示例中,dnsrecord1 將更改為 dnsrecord2



PS C:\Users\da.v.kolev> $test = Get-DnsServerResourceRecord -ZoneName 10.in-addr.arpa -RRType Ptr | Where-Object {$_.RecordData.PtrDomainName -like 'dnsrecord1.contoso.com.' }
PS C:\Users\da.v.kolev> $test

HostName                  RecordType Type       Timestamp            TimeToLive      RecordData
--------                  ---------- ----       ---------            ----------      ----------
1.33.22                   PTR        12         0                    01:00:00     dnsrecord1.contoso.com.


PS C:\Users\da.v.kolev> $test.RecordData

PtrDomainName                          PSComputerName
-------------                          --------------
dnsrecord1.contoso.com.


PS C:\Users\da.v.kolev> $test.RecordData.PtrDomainName
dnsrecord1.contoso.com.
PS C:\Users\da.v.kolev>

關鍵是您使用新的 IP 更新 DNS A 記錄。

對於 PTR 記錄,IP 地址是名稱的一部分。 無法更新。 因此 PTR 記錄將過時,需要刪除。 並且需要創建一個新記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM