[Powershell] Get-Nicinfo

This function retrieves all available information for a network interface card. The NIC can have multiple adapters.

   1: function Get-NicInfo {
   2:     [Cmdletbinding()]
   3:     PARAM
   4:     (
   5:          [Parameter(Position=1,
   6:                     Mandatory=$false,
   7:                     ValueFromPipeline = $true,
   8:                     Helpmessage="The computer name")] 
   9:         [string]$computername = "localhost",
  10:         [Parameter(Position=2,
  11:                     Mandatory=$false,
  12:                     Helpmessage="Only active adapter information")]
  13:         [boolean]$active = $true            
  14:     )
  15:     BEGIN
  16:     {
  17:         $results = @()
  18:         #set the erroractionpreference to SilentlyContinue. 
  19:         #(We're not concerned about offline machines)
  20:         $erroractionpreference = "SilentlyContinue"
  21:     }
  22:     PROCESS
  23:     {
  24:         $AllAdapters = @("")
  25:         #Check if $Active = $true
  26:         if (-not $active) {
  27:             $Adapters = Get-Wmiobject Win32_NetworkAdapterConfiguration `
  28:             -Computername $computername 
  29:         } 
  30:         else {
  31:             $Adapters = Get-Wmiobject Win32_NetworkAdapterConfiguration `
  32:             -Computername $computername |`
  33:             Where-Object{$_.IPEnabled -eq $True}
  34:         }
  35:         
  36:         #Loop thru all adapters
  37:         ForEach($Adapter In $Adapters)
  38:         {
  39:             [String]$DNSServers = ""
  40:             $Adapters2 = Get-Wmiobject Win32_NetworkAdapter -Computername $pc `
  41:             | Where-Object{$_.Caption -eq $Adapter.Caption}
  42:             [String]$NetID = $Adapters2.NetConnectionID
  43:             If($Adapter.DNSServerSearchOrder -ne $Null)
  44:             {
  45:                 ForEach($Address In $Adapter.DNSServerSearchOrder)
  46:                 {
  47:                     $DNSServers += "[" + $Address + "]"
  48:                 }
  49:             }
  50:             
  51:             $result = new-object object
  52:             $result | add-member Noteproperty PC $pc.ToUpper()
  53:             $result | add-member Noteproperty NETID `
  54:             $NETID
  55:             $result | add-member Noteproperty Description `
  56:             $Adapter.Description
  57:             $result | add-member Noteproperty MACAddress `
  58:             $Adapter.MACAddress
  59:             $result | add-member Noteproperty IPAddress `
  60:             $Adapter.IPAddress
  61:             $result | add-member Noteproperty Subnet `
  62:             $Adapter.IPSubnet
  63:             $result | add-member Noteproperty DHCPEnabled `
  64:             $Adapter.DHCPEnabled
  65:             $result | add-member Noteproperty DHCPServer `
  66:             $Adapter.DHCPServer
  67:             $result | add-member Noteproperty DNSServers `
  68:             $DNSServers
  69:             $result | add-member Noteproperty WINSPrimaryServer `
  70:             $Adapter.WINSPrimaryServer
  71:             $result | add-member Noteproperty WINSSecondaryServer `
  72:             $Adapter.WINSSecondaryServer
  73:             $result | add-member Noteproperty DomainDNSRegistrationEnabled `
  74:             $Adapter.DomainDNSRegistrationEnabled
  75:             $result | add-member Noteproperty FullDNSRegistrationEnabled `
  76:             $Adapter.FullDNSRegistrationEnabled
  77:             $result | add-member Noteproperty WINSEnableLMHostsLookup `
  78:             $Adapter.WINSEnableLMHostsLookup
  79:             
  80:             $results += $result
  81:         }
  82:     }
  83:     END
  84:     {
  85:         return $results
  86:     }
  87: }
Attachment: Get-NicInfo.zip
Published Friday, February 12, 2010 7:22 AM by scallebaut

Comments

No Comments