首页 > 解决方案 > 使用 powershell 更新 DNS 记录

问题描述

我想编写一个 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输出:

在下面的示例中,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>

标签: windowspowershelldnsactive-directory

解决方案


推荐阅读