Gary's $this and that about PowerShell

I am a Microsoft Senior Premier Field Engineer based out of Atlanta, GA. My focus is Powershell. This blog is mainly to share interesting Powershell script samples.

Resolve IP Addresses to Hostname using PowerShell

Resolve IP Addresses to Hostname using PowerShell

  • Comments 4
  • Likes

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: http://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 http://www.microsoft.com/info/cpyright.htm.

Comments
  • Thank you for posting this. But for some reason when I use the file name option(i un-commented it out), it doesn't seem to resolve the IP address. All it does it spit back out the IP's and says "No HostnameFound" Put if I enter each IP in the script it works like a charm. Can you help?

  • Well done. Worked for me.

  • If the IPs are listed in your text file without quotes around them then you need to put quotes around the $ip parameter like this:

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

    Worked great for me too.

  • Hi Gary. I took your cert class at MSFT about 2 yrs ago. How have you been?
    This was great. Exactly what I needed.

    Take care amigo.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment