How to Get The Real RecordData from DnsServerResourceRecord Using Powershell?
<p>I'm using PowerShell to extract information from an Active Directory DNS server and I'm having trouble getting to the data I want.</p>

<p>Specifically, I'm trying to get the names of hosts that belong to a particular subnet, <code>10.104.128.x</code>.</p>

<p>When I use the following commands:</p>

<pre>Get-DnsServerResourceRecord -ComputerName AD_DNS_SERVER -ZoneName 104.10.in-addr.arpa -RRType Ptr | Where-Object {$_.HostName -like '*.128'}`</pre>

<p>I get output that looks like this:</p>

<pre>
HostName                  RecordType Timestamp            TimeToLive      RecordData                                        
--------                  ---------- ---------            ----------      ----------                                        
104.128                   PTR        10/19/2015 3:00:0... 00:15:00        adl5c260a86ba79.XYZ.net.                          
11.128                    PTR        12/29/2015 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
</pre>

<p>What I really want are the first column, (<code>HostName</code>), which has the last two octets of the IP; and the fifth column, (<code>RecordData</code>), which has the name of the host the IP is assigned to.  </p>

<p>The hostname is the data I really want/need.  And I see it right there!</p>

<p>So I used the <code>select</code> command to pare down the output in the pipe train.  New command looks like this:</p>

<pre>Get-DnsServerResourceRecord -ComputerName AD_DNS_SERVER  -ZoneName 104.10.in-addr.arpa -RRType Ptr | Where-Object {$_.HostName -like '*.128'} | select HostName, RecordData</pre>

<p>But the output looks like this:</p>

<pre>
HostName RecordData                
-------- ----------               
104.128  DnsServerResourceRecordPtr
11.128   DnsServerResourceRecordPtr
110.128  DnsServerResourceRecordPtr
114.128  DnsServerResourceRecordPtr
</pre>

<p>Dosen't get me the hostname though. Just the type of object the <code>RecordData</code> <em>is</em> but not the data that the object contains, perhaps?</p>

<p>I also tried piping the output to CSV and got the same result.</p>

<p>Then I tried looking at the <code>DnsServerResourceRecord</code> object properties with <code>Get-Member</code>.  That showed me the object had a property called <code>PSComputerName</code>.  I thought maybe that would have the name of the host but that came up blank when I tried to <code>select</code> it.</p>

<p>I then Googled around a bit and found a few pages that recommended a few ways to use RecordData.ipv4address to coax the data out of the <code>DnsServerResourceRecordPtr</code> object but I haven't gotten any of them to work yet.  Output still prints blanks.</p>

<p>So my question is: does a reliable method exist for getting the actual hostname from a PTR record?</p>