As tarefas WMI para redes gerenciam e obtêm informações sobre conexões e endereços IP ou MAC. Para obter outros exemplos, consulte o TechNet ScriptCenter em https://www.microsoft.com/technet.
Os exemplos de script mostrados neste tópico obtêm dados somente do computador local. Para obter mais informações sobre como usar o script para obter dados de computadores remotos, consulte Conectando-se ao WMI em um computador remoto.
O procedimento a seguir descreve como executar um script.
Para executar um script
Copie o código e salve-o em um arquivo com uma extensão .vbs, como filename.vbs. Certifique-se de que o editor de texto não adiciona uma extensão .txt ao arquivo.
Abra uma janela de prompt de comando e navegue até o diretório onde você salvou o arquivo.
Digite cscript filename.vbs na linha de comandos.
Se não conseguir aceder a um registo de eventos, verifique se está a executar a partir de uma linha de comandos com privilégios elevados. Alguns Registos de Eventos, como o Registo de Eventos de Segurança, podem estar protegidos por Controlos de Acesso de Utilizador (UAC).
Observação
Por padrão, o cscript exibe a saída de um script na janela do prompt de comando. Como os scripts WMI podem produzir grandes quantidades de saída, convém redirecionar a saída para um arquivo. Digite cscript filename.vbs > outfile.txt no prompt de comando para redirecionar a saída do script filename.vbs para outfile.txt.
A tabela a seguir lista exemplos de script que podem ser usados para obter vários tipos de dados do computador local.
... determinar qual endereço IP foi atribuído a uma determinada conexão de rede?
Utilize a classe Win32_NetworkAdapter e a propriedade NetConnectionID para determinar o endereço MAC da ligação de rede. Em seguida, use a classe Win32_NetworkAdapterConfiguration para localizar o endereço IP associado ao endereço MAC.
VB
strComputer = "." Set objWMIService = GetObject(_ "winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_NetworkAdapter " _ & "Where NetConnectionID = " & _ "'Local Area Connection 2'")
Para cada objItem em colItems strMACAddress = objItem.MACAddress Next
Set colItems = objWMIService.ExecQuery _ ("Selecionar * de 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
VB
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
... determinar o endereço MAC de um adaptador de rede?
Use a classe Win32_NetworkAdapterConfiguration e verifique o valor da propriedade IPAddress. Isso é retornado como uma matriz, portanto, use um loop de For-Each para obter o valor.
VB
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
PowerShell
$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"}
... configurar um computador para começar a obter o seu endereço IP através do DHCP?
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
... atribuir a um computador um endereço IP estático?
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
Win32_PingStatus pode retornar dados para computadores que têm endereços IPv4 e endereços IPv6.
VB
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
VB
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