如何使用Powershell从DnsServerResourceRecord获取真实的RecordData?

Mic*_*l J 2 dns powershell active-directory

我正在使用PowerShell从Active Directory DNS服务器提取信息,但无法获取所需的数据。

具体来说,我正在尝试获取属于特定子网的主机的名称10.104.128.x

当我使用以下命令时:

Get-DnsServerResourceRecord-计算机名AD_DNS_SERVER-区域名104.10.in-addr.arpa -RRType Ptr | Where-Object {$ _。HostName -like'* .128'}`

我得到的输出看起来像这样:

主机名RecordType时间戳记TimeToLive RecordData                                        
-------- ---------- --------- ---------- ----------                                        
104.128 PTR 10/19/2015 3:00:0 ... 00:15:00 adl5c260a86ba79.XYZ.net。                          
11.128 PTR 2015年12月29日6:00:0 ... 00:15:00 adl3c970e8d7166.XYZ.net。                          
110.128 PTR 1/29/2012 11:00:0 ... 00:15:00 nroxitow7tst.ABC.com。                       
114.128 PTR 1/20/2012 7:00:00 AM 00:15:00 adl5c260a86c29e.ABC.com

我真正想要的是第一列(HostName),其中包含IP的最后两个八位位组;第五列(RecordData),其中包含IP分配给的主机的名称。

主机名是我真正想要/需要的数据。我在那里看到它!

因此,我使用该select命令缩减了管道系统中的输出。新命令如下所示:

Get-DnsServerResourceRecord-计算机名AD_DNS_SERVER-区域名104.10.in-addr.arpa -RRType Ptr | Where-Object {$ _。HostName -like'* .128'} | 选择主机名,记录数据

但是输出看起来像这样:

主机名RecordData                
-------- ----------               
104.128 DnsServerResourceRecordPtr
11.128 DnsServerResourceRecordPtr
110.128 DnsServerResourceRecordPtr
114.128 DnsServerResourceRecordPtr

虽然没有得到我的主机名。只是对象的类型RecordData 而不是数据的对象包含,也许?

我还尝试将输出管道传输到CSV并获得了相同的结果。

然后,我尝试使用来查看DnsServerResourceRecord对象属性Get-Member。那告诉我该对象具有名为的属性PSComputerName。我以为可能是主机名,但尝试时却空白select

然后,我在Google周围搜索了一下,发现了一些页面,这些页面推荐了一些使用RecordData.ipv4address将数据从DnsServerResourceRecordPtr对象中诱骗出来的方法,但是我还没有任何一个可以使用。输出仍然打印空白。

所以我的问题是:是否存在一种可靠的方法来从PTR记录中获取实际的主机名?

Mat*_*sen 5

要从对象中选择PtrDomainName属性DnsServerResourceRecordPtr,请使用计算出的属性:

... |Select-Object HostName, @{Name='RecordData';Expression={$_.RecordData.PtrDomainName}}
Run Code Online (Sandbox Code Playgroud)