#Requires -version 2.0 # ----------------------------------------------------------------------------- # Script: Get-IPData.ps1 # Version: 1.0 # Author: Jeffery Hicks # http://jdhitsolutions.com/blog # http://twitter.com/JeffHicks # Date: 3/10/2011 # Keywords: # Comments: # # "Those who forget to script are doomed to repeat their work." # # **************************************************************** # * DO NOT USE IN A PRODUCTION ENVIRONMENT UNTIL YOU HAVE TESTED * # * THOROUGHLY IN A LAB ENVIRONMENT. USE AT YOUR OWN RISK. IF * # * YOU DO NOT UNDERSTAND WHAT THIS SCRIPT DOES OR HOW IT WORKS, * # * DO NOT USE IT OUTSIDE OF A SECURE, TEST SETTING. * # **************************************************************** # ----------------------------------------------------------------------------- Function Get-IPData { #this function assumes admin credentials [cmdletBinding()] Param( [Parameter(Position=0,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] [ValidateNotNullOrEmpty()] [Alias("name")] [string[]]$computername=$env:computername ) Process { ForEach ($computer in $computername) { Write-Verbose "Querying $($computer.ToUpper())" Try { #get NICS that are IP and DHCP enabled Get-WMIObject -Class win32_networkadapterconfiguration -computername $Computer ` -Filter "IPEnabled='TRUE' AND DHCPEnabled='TRUE'" -ErrorAction "Stop" | Select Description,DNSHostname, @{Name="IPAddress";Expression={$_.IPAddress[0]}}, @{Name="SubnetMask";Expression={$_.IPSubnet[0]}}, @{Name="DefaultGateway";Expression={$_.DefaultIPGateway[0]}},DNSDomain, @{Name="PrimaryDNS";Expression={$_.DNSServerSearchOrder[0]}},DHCPServer, @{Name="DHCPLease";Expression={$_.ConvertToDateTime($_.DHCPLeaseObtained)}}, @{Name="DHCPExpires";Expression={$_.ConvertToDateTime($_.DHCPLeaseExpires)}}, @{Name="DHCPTimeToLive";Expression={ $_.ConvertToDateTime($_.DHCPLeaseExpires) - (Get-Date)}}, MACAddress, @{Name="Speed";Expression={ #use an Associators Of query to get the NIC $nic=Get-WmiObject -query "associators of {Win32_NetworkAdapterConfiguration.Index=$($_.index)}" -computername $computer $nic.Speed }} } #close Try Catch { Write-Warning "Failed to retrieve IP configuration from $($computer.ToUpper())" Write-Warning $_.Exception.Message } #close Catch } #close ForEach } #close Process } #end function