Recently I’ve started to embrace PowerShell’s great possibilities, and as a result of that, I’ll post some of my “toys”.
On Unix-like operating system I’m using host command to resolve hostnames into IP’s and the other way. On Windows, there’s a nslookup tool, which works just like the Unix equivalent, but to get accustomed to PowerShell, I’ve decided to write a function, which uses internal command to do NS lookups.
Generally, to resolve a hostname you can use this one-liner:
[System.Net.Dns]::GetHostAddresses("devplant.net")
You can shorten it by declaring a short function.
function resolve( [string] $in ){ [System.Net.Dns]::GetHostAddresses($in) }
(Defining functions remember not to collide with pre-existing variable names)
But this is only one-way command – to resolve IP address into a hostname, you have to use other command:
[System.Net.Dns]::GetHostbyAddress("72.21.210.250")
To combine both functionalities, you can extend our function, using regular expression to do a naive recognition of IP addresses.
function resolve( [string] $in ){ if ($in -match "(\d{1,3}\.){3}(\d{1,3})") { [System.Net.Dns]::GetHostbyAddress($in) } else { [System.Net.Dns]::GetHostAddresses($in) } }
Now here’s how you can use it:
PS C:\Users\leafnode> resolve devplant.net IPAddressToString : 91.192.224.142 Address : 2397093979 AddressFamily : InterNetwork ScopeId : IsIPv6Multicast : False IsIPv6LinkLocal : False IsIPv6SiteLocal : False PS C:\Users\leafnode> resolve 72.21.210.250 HostName Aliases AddressList -------- ------- ----------- 210-250.amazon.com {} {72.21.210.250} PS C:\Users\leafnode>
geek…