TCP/IP 應該是目前最常用的網路通訊協定,因此在此將說明如何使用 Windows PowerShell 來查詢網路卡的設定,說得更明白一點,就是檢查 IP 位址的設定。
強而有力的 Windows PowerShell 系列文章列表如下:
http://ithelp.ithome.com.tw/event/ironmanarticle2/id/20005121
嚴格來說,網路卡的資訊並不屬於是 TCP/IP 的資訊,但是諸如 MAC 位址、網路卡的類型等資訊卻對於了解電腦發生的網路狀況是十分有用的。因此使用下列命令即可取得這些資訊的摘要:
$strComputer = "."
Get-WmiObject -Class Win32_NetworkAdapter -ComputerName $strComputer |`
Select-Object -Property [a-z]* | Out-Host -Paging
大多數的低階網路通訊協定管理工作都和 TCP/IP 有關,所以使用 Get-WmiObject cmdlet 呼叫 Win32_NetworkAdapterConfiguration 類別即可取得本機電腦目前所有已經啟用的網路卡之 IP 位址:
$strComputer = "."
Get-WmiObject -Class Win32_NetworkAdapterConfiguration `
-Filter IPEnabled=TRUE -ComputerName $strComputer |`
Format-Table -Property IPAddress
即便網路僅使用 TCP/IP,電腦上的網路卡設定有些並非是真正的 TCP/IP 介面卡,而是為所有介面卡提供 RAS、PPTP、QoS 及其他服務支援的一般軟體元素(請看上圖),所以本身並沒有位址,因此必須加入篩選陳述式 IPEnabled=TRUE。
執行的結果類似這樣:
由上圖可以看出結果的值都會加上大括號,這與之前使用其他 cmdlet 看到的結果不同,為了讓大家了解使用大括號的原因,用 Get-Member cmdlet 來檢查 IPAddress 屬性:
$strComputer = "."
Get-WmiObject -Class Win32_NetworkAdapterConfiguration `
-Filter IPEnabled=TRUE -ComputerName $strComputer |`
Get-Member -Name IPAddress
圖中的 System.String[] 代表資料的類型是陣列,所以每張網路卡的 IPAddress 屬性其實是陣列。
使用下列的命令會顯示每張網路卡的詳細 IP 設定:
Get-WmiObject Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE
由上圖可以看出預設顯示的 IP 設定很精簡,其實這些資訊只佔所有可用資訊的一小部分,因此如果需查看更多的資訊,可用 Select-Object 篩選所要顯示的屬性。例如下面的命令會顯示屬性名稱為 a~z 開頭的:
Get-WmiObject Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE |`
Select-Object -Property [a-z]*