windows - 使用 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>
解决方案
推荐阅读
- amcharts - 在 amcharts4 中按所有日期时间而不是小时显示日期轴
- here-api - HERE API 是否提供 GSM 小区信息的三角测量?
- google-cloud-platform - 如何将 Google 存储中的多个 csv 上传(通过不同的机器)合并到一个最终文件中
- flutter - 如何使“项目:”等于 CarouselSlider 中的可变长度?
- python - 无法在数据集上运行 PCA
- java - 用于创建 X 框的 Java 循环和 If 条件
- symfony - Symfony 2 - 为什么 event.DEBUG 出现在 dev.log 中
- python - 如何在 python 3.7 中自动更新我的 cx_freeze 应用程序
- c - 如何找到矿山中的最大钻石数量?
- java - 带有多个 jpanel 的框架