- <#
- .SYNOPSIS
- Gets and displays the IP address of a computer
- .DESCRIPTION
- This script uses Win32_NetworkAdapterConfiguration to
- obtain, then display, a system's IP addresses.
- NB: this only works on XP or later versions of Windows.
- .NOTES
- File Name : Get-IPAddress.ps1
- Author : Thomas Lee - tfl@psp.co.uk
- Requires : PowerShell V2
- .LINK
- Script postesd to:
- http://www.pshscripts.blogspot.com
- MSDN Sample at:
- http://msdn.microsoft.com/en-us/library/aa394590(VS.85).aspx
- .EXAMPLE
- [ps] c:\foo> .\Get-IPAddress.ps1
- IP Address : 10.10.1.115
- IP Address : fe80::3953:f67b:2f1c:1323
- IP Address : 10.10.1.120
- IP Address : fe80::d8ed:afe2:2a97:a596
- 4 IP addresses found on this system
- #>
- ##
- # Start of Script
- ##
- # Get Networking Adapter Configuration
- $Computer = "."
- $IPconfigset = Get-WmiObject Win32_NetworkAdapterConfiguration
- # Iterate and get IP address
- $count = 0
- foreach ($IPConfig in $IPConfigSet) {
- if ($Ipconfig.IPaddress) {
- foreach ($addr in $Ipconfig.Ipaddress) {
- "IP Address : {0}" -f $addr;
- $count++
- }
- }
- }
- if ($count -eq 0) {"No IP addresses found"}
- else {"$Count IP addresses found on this system"}
- #End of Script
This blog contains PowerShell scripts, more PowerShell scripts and still more PowerShell scripts. Occasionally you may see some organisational posts.
Thursday 29 January 2009
Get-IPAddress.ps1
Subscribe to:
Post Comments (Atom)
6 comments:
The program is nice.
But i know my ip address through this ip-details along with router map.
SRI: what the ip-details site shows you is the external address, not yor internal address. The script shows how to get your internal address (or addresses).
If I parse out 'ipconfig' in Powershell as below I get five addresses which System.Net.IPAddress validates and can piped to ping.exe as strings. If I use 'gwmi' (as below) I am returned three addresses whose IPv6 addresses don't validate in System.Net.Ipaddress or work with ping.exe but are the identical format used in Win 7 firewall logs. What pieces of Windows Networking knowledge am I missing?
$IPAddress_ipconfig=(ipconfig | Select-string Address) -split ": " | Select-string -notmatch ". ."
foreach ($IP in $IPAddress_ipconfig) {([System.Net.IPaddress]::Parse("$IP")).IPAddressToString}
fe80::6172:6ecf:2d05:b0ae%12
192.168.0.11
fe80::cddc:ceef:b717:a5ac%11
2001:0:4137:9e76:30c3:129:3f57:fff4
fe80::30c3:129:3f57:fff4%17
Get-WmiObject Win32_NetworkAdapterConfiguration | ? {$_.IPAddress} | Select IPaddress | fc -expand CoreOnly | findstr [0-9]
fe80::cddc:ceef:b717:a5ac
192.168.0.11
fe80::6172:6ecf:2d05:b0ae
The last two addresses shown via IPConfig are for the unnel adapter Teredo Tunneling Pseudo-Interface. It appears that WMI does not return these.
Where would I add a line to also get the computer name
In line 31, I set the computer name to "." (aka local host). If you wanted to get the hostname just used the hostname.exe eg:
$cname = hostname
"This computer is named {0}" -f $cname
Hope this helps!
Post a Comment