Задачи WMI для управления сетями включают управление и получение информации о подключениях, а также об IP-адресах и MAC-адресах. Другие примеры см. в разделе TechNet ScriptCenter в 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. Вы также можете освободить или продлить все аренды DHCP с помощью методов ReleaseDHCPLeaseAll и RenewDHCPLeaseAll.
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()
}
|
|
... отключите или включите сетевой адаптер? |
Используйте класс Win32_NetworkAdapter и методы Disable или Enable. |
... определите, какой IP-адрес назначен заданному сетевому подключению? |
Используйте класс Win32_NetworkAdapter и свойство NetConnectionID для определения MAC-адреса сетевого подключения. Затем используйте класс Win32_NetworkAdapterConfiguration, чтобы найти IP-адрес, связанный с MAC-адресом.
strComputer = "." Set objWMIService = GetObject(_ "winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_NetworkAdapter " _ & "Where NetConnectionID = " & _ "'Подключение по локальной сети 2'") Для каждого objItem в colItems 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"}
|
|
... настройте компьютер для начала получения IP-адреса с помощью DHCP? |
Используйте класс 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.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