用於管理網路的 WMI 任務,用來獲取有關連線以及 IP 或 MAC 位址的相關資訊。 如需其他範例,請參閱techNet ScriptCenter at https://www.microsoft.com/technet。
本主題中顯示的腳本範例只會從本機計算機取得數據。 如需有關如何使用腳本從遠端電腦取得資料的詳細資訊,請參閱 連線到遠端電腦上的 WMI。
下列程式描述如何執行腳本。
執行腳本
- 複製程序代碼,並將它儲存在擴展名為 .vbs 的檔案中,例如 filename.vbs。 請確定文字編輯器不會將 .txt 擴展名新增至檔案。
- 開啟命令提示字元視窗,並導航至您儲存檔案的目錄。
- 在命令提示字元中鍵入 cscript filename.vbs。
- 如果您無法存取事件記錄檔,請檢查您是否正在從提高許可權的命令提示字元執行。 某些事件記錄檔,例如安全性事件記錄檔,可能會受到使用者訪問控制 (UAC) 的保護。
注意
根據預設,cscript 會在命令提示字元視窗中顯示文稿的輸出。 由於 WMI 命令稿可能會產生大量的輸出,因此您可能會想要將輸出重新導向至檔案。 在命令提示字元中輸入 cscript filename.vbs > outfile.txt,將 filename.vbs 的輸出導向至 outfile.txt。
下表列出可用來從本機計算機取得各種數據類型的腳本範例。
...使用 WMI 停用網路連線? |
如果您使用 DHCP,請使用 Win32_NetworkAdapterConfiguration 和 ReleaseDHCPLease 方法來釋放 IP 位址。 如果您未使用 DHCP,就無法使用 WMI 來停用網路連線。 若要重新啟用網路連線,請使用 objNetCard.RenewDHCPLease。 您也可以使用 ReleaseDHCPLeaseAll 和 RenewDHCPLeaseAll 方法來發行或更新所有 DHCP 租用。
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetCards = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration " _
& "Where IPEnabled = True")
For Each objNetCard in colNetCards
objNetCard.ReleaseDHCPLease()
Next
|
$Computer = "."
$net = Get-WMIObject -class Win32_NetworkAdapterConfiguration -ComputerName $computer
$netenabled = $net | where {$_.IPenabled}
foreach ($NetCard in $netenabled) {
"Releasing lease on: {0}" -f $netcard.caption
$netcard.ReleaseDHCPLease()
}
|
|
...停用或啟用 NIC? |
使用 Win32_NetworkAdapter 類別和 Disable 或 Enable 方法。 |
...判斷哪個IP位址已指派給指定的網路連線? |
使用 Win32_NetworkAdapter 類別和 NetConnectionID 屬性來判斷網路連接的 MAC 位址。 然後,使用 Win32_NetworkAdapterConfiguration 類別來尋找與 MAC 位址相關聯的 IP 位址。
strComputer = “.” Set objWMIService = GetObject(_ “winmgmts:\\” & strComputer & “\root\cimv2”) Set colItems = objWMIService.ExecQuery _ (“Select * From Win32_NetworkAdapter” _ & “Where NetConnectionID = ” & _ “'Local Area Connection 2'”)對於 colItems 中的每一個 objItem,strMACAddress = objItem.MACAddress;Next
Set colItems = objWMIService.ExecQuery _ (「Select * From Win32_NetworkAdapterConfiguration」)
For Each objItem in colItems
If objItem.MACAddress = strMACAddress Then
For Each strIPAddress in objItem.IPAddress
Wscript.Echo "IP Address: " & strIPAddress
Next
End If
Next
|
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colNics = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapter " _
& "Where NetConnectionID = " & _
"'Local Area Connection'")
For Each objNic in colNics
Set colNicConfigs = objWMIService.ExecQuery _
("ASSOCIATORS OF " _
& "{Win32_NetworkAdapter.DeviceID='" & _
objNic.DeviceID & "'}" & _
" WHERE AssocClass=Win32_NetworkAdapterSetting")
For Each objNicConfig In colNicConfigs
For Each strIPAddress in objNicConfig.IPAddress
Wscript.Echo "IP Address: " & strIPAddress
Next
Next
Next
|
|
...判斷網路適配器的 MAC 位址嗎? |
使用 Win32_NetworkAdapterConfiguration 類別,並檢查 MACAddress 屬性的值。 |
...判斷計算機的IP位址? |
使用 Win32_NetworkAdapterConfiguration 類別,並檢查 IPAddress 屬性的值。 這會以陣列形式傳回,因此請使用 For-Each 迴圈來取得值。
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select IPAddress from Win32_NetworkAdapterConfiguration ")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) _
to UBound(IPConfig.IPAddress)
WScript.Echo IPConfig.IPAddress(i)
Next
End If
Next
|
$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"}
|
|
...設定電腦透過 DHCP 開始取得其 IP 位址嗎? |
使用 Win32_NetworkAdapterConfiguration 類別和 EnableDHCP 方法。
strComputer = "."
Set objWMIService = GetObject(_
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration " _
& "where IPEnabled=TRUE")
For Each objNetAdapter In colNetAdapters
errEnable = objNetAdapter.EnableDHCP()
Next
|
|
...將靜態IP位址指派給計算機? |
使用 Win32_NetworkAdapterConfiguration 類別和 EnableStatic 方法。
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration " _
& "where IPEnabled=TRUE")
strIPAddress = Array("192.168.1.141")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.1.100")
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic( _
strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(_
strGateway, strGatewaymetric)
Next
|
|
...取得網路適配器的相關資訊,而不包括 RAS 和 VPN 連線等的資訊? |
使用 Win32_NetworkAdapterConfiguration 類別。 在您的 WQL 查詢中,請使用此子句:Where IPEnabled = True。
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select IPAddress from Win32_NetworkAdapterConfiguration" _
& " where IPEnabled=TRUE")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) _
to UBound(IPConfig.IPAddress)
WScript.Echo IPConfig.IPAddress(i)
Next
End If
Next
|
|
...對電腦進行 ping 操作而不使用 Ping.exe嗎? |
使用 Win32_PingStatus 類別。
Win32_PingStatus 可以傳回同時具有IPv4位址和IPv6位址的計算機數據。
strComputer = “.”Set objWMIService = GetObject(_ “winmgmts:\\” & strComputer & “\root\cimv2”) Set colPings = objWMIService.ExecQuery _ (“Select * From Win32_PingStatus where Address = '192.168.1.1'”) For Each objStatus in colPings
If IsNull(objStatus.StatusCode) _
or objStatus.StatusCode<>0 Then
WScript.Echo "Computer did not respond."
Else
Wscript.Echo "Computer responded."
End If
Next
|
strComputer = "client1"
Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec( _
"ping -n 2 -w 1000 " & strComputer)
strPingResults = LCase(objScriptExec.StdOut.ReadAll)
If InStr(strPingResults, "reply from") Then
If InStr(strPingResults, "destination net unreachable") Then
WScript.Echo strComputer & "did not respond to ping."
Else
WScript.Echo strComputer & " responded to ping."
End If
Else
WScript.Echo strComputer & " did not respond to ping."
End If
|
|
-
腳本和應用程式的 WMI 任務
-
WMI C++應用程式範例
-
TechNet ScriptCenter