In this article, I am going to write powershell script to find machinename from IP address and get IP address from computer name. We can resolve hostname from IP address and vice versa by using .NET class System.Net.Dns.
Find machine name from IP address:
$ipAddress= "192.168.1.54" [System.Net.Dns]::GetHostByAddress($ipAddress).Hostname
Resolve Hostname to IP Address:
$machineName= "DC1" $hostEntry= [System.Net.Dns]::GetHostByName($machineName) $hostEntry.AddressList[0].IPAddressToString
Resolve Hostname for set of IP addresses from text file:
Use the below powershell script to find machine name for multiple IP addresses. First create the text file ip-addresses.txt which includes one IP address in each line. You will get the machinename list in the txt file machinenames.txt.
Get-Content C:ip-addresses.txt | ForEach-Object{ $hostname = ([System.Net.Dns]::GetHostByAddress($_)).Hostname if($? -eq $True) { $_ +": "+ $hostname >> "C:\machinenames.txt" } else { $_ +": Cannot resolve hostname" >> "C:\machinenames.txt" }}
Find Computer name for set of IP addresses from CSV:
Use the below powershell script to get hostname for multiple IP addresses from csv file. First create the csv file ip-addresses.csv which includes the column IPAddress in the csv file. You will get the hostname and IP address list in the csv file machinenames.csv.
Import-Csv C:ip-Addresses.csv | ForEach-Object{ $hostname = ([System.Net.Dns]::GetHostByAddress($_.IPAddress)).Hostname if($? -eq $False){ $hostname="Cannot resolve hostname" } New-Object -TypeName PSObject -Property @{ IPAddress = $_.IPAddress HostName = $hostname }} | Export-Csv C:machinenames.csv -NoTypeInformation -Encoding UTF8
Advertisement
Thank you! Finally a simple solution.
Hey guys, I am testing this solution which seems amazing; however I am having an issue where the results being generated into the txt, is the actual name of the network host, rather than the actual PC names on our network. Am I doing something incorrectly?
Second snippet was just what I needed. Thanks!