Resolve IP Addresses to Hostname using PowerShell

I had a previous customer shoot me an email asking for help whipping up a script to convert a list of IP addresses from a text file to their respective host names, and put that into another text file.  I put together a little demonstration script to show a way to get this done.  I am using the .Net Static Class “system.net.DNS”.  I hope this is useful to someone :)

 

# The following line read a plain list of IPs from files. For this demo, I have

# this line commented out and added a line to just define an array of IPs here

#$listofIPs = Get-Content c:\IPList.txt

$listofIPs = "173.136.234.58","173.136.234.59","173.136.234.60"

#Lets create a blank array for the resolved names

$ResultList = @()

# Lets resolve each of these addresses

foreach ($ip in $listofIPs)

{

     $result = $null

    

     $currentEAP = $ErrorActionPreference

     $ErrorActionPreference = "silentlycontinue"

    

     #Use the DNS Static .Net class for the reverse lookup

     # details on this method found here: https://msdn.microsoft.com/en-us/library/ms143997.aspx

     $result = [System.Net.Dns]::gethostentry($ip)

    

     $ErrorActionPreference = $currentEAP

    

     If ($Result)

     {

          $Resultlist += [string]$Result.HostName

     }

     Else

     {

          $Resultlist += "$IP - No HostNameFound"

     }

}

# If we wanted to output the results to a text file we could do this, for this

# demo I have this line commented and another line here to echo the results to the screen

#$resultlist | Out-File c:\output.txt

$ResultList

 

-Gary

This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at https://www.microsoft.com/info/cpyright.htm.