網絡故障對於用戶來講是很複雜的問題,由於它可能涉及不少方面的知識,不容易查找和解決。網絡
爲檢查網絡故障,建立名爲「GetActiveNicAndConfig.ps1」的腳本,其代碼以下:ide
param($computer = $env:computername, [switch]$full, [switch]$help)函數
function funline ($strIN)網站
{orm
$strLine= "=" * $strIn.length對象
Write-Host -ForegroundColor yellow $strIN blog
Write-Host -ForegroundColor darkYellow $strLineip
}開發
function funHelp()字符串
{
$helpText=@"
DESCRIPTION:
NAME: GetActiveNicAndConfig.ps1
Displays
PARAMETERS:
-computer the name of the computer
-full prints complete information
-help prints help file
SYNTAX:
GetActiveNicAndConfig.ps1 -computer WebServer
Displays network adapter info and network adapter configuration info on a computer
named WebServer
GetActiveNicAndConfig.ps1
Displays network adapter info and network adapter configuration info on the local machine
GetActiveNicAndConfig.ps1 -computer WebServer -full
Displays full network adapter info and full network adapter configuration info on a computer named WebServer
GetActiveNicAndConfig.ps1 -help ?
Displays the help topic for the script
"@
$helpText
exit
}
if($help){ "Obtaining help ..." ; funhelp }
New-Variable -Name c_netConnected -value 2 -option constant
$nic = Get-WmiObject -Class win32_networkadapter -computername $computer `
-filter "NetConnectionStatus = $c_netConnected"
$nicConfig = Get-WmiObject -Class win32_networkadapterconfiguration `
-filter "interfaceindex = $($nic.interfaceindex)"
if($full)
{
funline("Full Network adapter information for $($computer)")
format-list -InputObject $nic -property [a-z]*
funline("Full Network adapter configuration for $($computer)")
format-list -InputObject $nicConfig -property [a-z]*
}
ELSE
{
funline("Basic Network adapter information for $($computer)")
format-list -InputObject $nic
funline("Basic Network adapter configuration for $($computer)")
format-list -InputObject $nicConfig
}
該腳本中使用param語句定義了3個參數,即-computer、-full和-help,其中將-computer變量設置爲系統環境變量中的計算機名稱。
funline函數得到輸入字符串的長度,並用這個長度來生成分隔線。結果保存在$strLine變量中,而後輸出帶下畫線的字符串。
隨後的代碼「New-Variable –Name c_netConnected –value 2 –option constant」建立保存已經鏈接網絡的網絡適配器數量的變量c_netConnected,其中的數值來自Windows軟件開發包(SDK)。使用Get-WmiObject cmdlet並選擇Win32_NetworkAdapter WMI類鏈接到$computer變量指定的計算機,而後查找當前已經鏈接的網絡適配器並將結果Management對象保存在$nic變量中。可使用該對象查找相關的網絡適配器配置對象,這裏使用$nic.InterfaceIndex屬性。由於該屬性也能夠用於Win32_NetworkAdapterConfiguration WMI類,將結果Management對象保存在$nicConfig變量中;另外還須要定義反饋信息數量的參數,在調用該腳本時提供了-full參數得到完整的網絡適配器及其配置信息。若是沒有-full參數,則僅輸出每一個WMI類的默認值。這時可使用Format-List cmdlet和-InputObject參數輸出信息。該腳本的執行結果如圖1所示。
圖1 執行效果
須要強調的是因爲管理網絡適配器的WMI管理類是存在差別,因此該腳本僅適用於Windows Vista和Windows Server 2008系統。
做者: 付海軍
出處:http://fuhj02.blog.51cto.com
版權:本文版權歸做者和51cto共有
轉載:歡迎轉載,爲了保存做者的創做熱情,請按要求【轉載】,謝謝
要求:未經做者贊成,必須保留此段聲明;必須在文章中給出原文鏈接;不然必究法律責任
我的網站: http://txj.lzuer.com/