I'm using PowerShell to extract information from an Active Directory DNS server and I'm having trouble getting to the data I want.
Specifically, I'm trying to get the names of hosts that belong to a particular subnet, 10.104.128.x
.
When I use the following commands:
Get-DnsServerResourceRecord -ComputerName AD_DNS_SERVER -ZoneName 104.10.in-addr.arpa -RRType Ptr | Where-Object {$_.HostName -like '*.128'}`
I get output that looks like this:
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
What I really want are the first column, (HostName
), which has the last two octets of the IP; and the fifth column, (RecordData
), which has the name of the host the IP is assigned to.
The hostname is the data I really want/need. And I see it right there!
So I used the select
command to pare down the output in the pipe train. New command looks like this:
Get-DnsServerResourceRecord -ComputerName AD_DNS_SERVER -ZoneName 104.10.in-addr.arpa -RRType Ptr | Where-Object {$_.HostName -like '*.128'} | select HostName, RecordData
But the output looks like this:
HostName RecordData -------- ---------- 104.128 DnsServerResourceRecordPtr 11.128 DnsServerResourceRecordPtr 110.128 DnsServerResourceRecordPtr 114.128 DnsServerResourceRecordPtr
Dosen't get me the hostname though. Just the type of object the RecordData
is but not the data that the object contains, perhaps?
I also tried piping the output to CSV and got the same result.
Then I tried looking at the DnsServerResourceRecord
object properties with Get-Member
. That showed me the object had a property called PSComputerName
. I thought maybe that would have the name of the host but that came up blank when I tried to select
it.
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 DnsServerResourceRecordPtr
object but I haven't gotten any of them to work yet. Output still prints blanks.
So my question is: does a reliable method exist for getting the actual hostname from a PTR record?
To select the PtrDomainName
property from the DnsServerResourceRecordPtr
object, use a calculated property:
... |Select-Object HostName, @{Name='RecordData';Expression={$_.RecordData.PtrDomainName}}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With