Las tareas de WMI para redes administran y obtienen información sobre las conexiones y las direcciones IP o MAC. Para ver otros ejemplos, consulte TechNet ScriptCenter en https://www.microsoft.com/technet.
Los ejemplos de script que se muestran en este tema obtienen datos solo del equipo local. Para más información sobre cómo usar el script para obtener datos de equipos remotos, consulte Conexión a WMI en un equipo remoto.
En el procedimiento siguiente se describe cómo ejecutar un script.
Para ejecutar un script
Copie el código y guárdelo en un archivo con una extensión.vbs, como filename.vbs. Asegúrese de que el editor de texto no agregue una extensión.txt al archivo.
Abra un símbolo del sistema y navegue hasta el directorio donde haya almacenado el archivo.
Escriba cscript filename.vbs en el símbolo del sistema.
Si no puede acceder a un registro de eventos, compruebe si se ejecuta desde un símbolo del sistema con privilegios elevados. Algunos registros de eventos, como el registro de eventos de seguridad, pueden estar protegidos mediante controles de acceso de usuario (UAC).
Nota
De forma predeterminada, cscript muestra la salida de un script en la ventana del símbolo del sistema. Dado que los scripts de WMI pueden generar un número elevado de salidas, es posible que le interese redirigir la salida a un archivo. Escriba cscript filename.vbs > outfile.txt en el símbolo del sistema para redirigir la salida del script filename.vbs a outfile.txt.
La tabla siguiente contiene ejemplos de script que se pueden usar para obtener varios tipos de datos del equipo local.
Cómo...
Clases o métodos de WMI
... se deshabilita una conexión de red mediante WMI.
... se determina qué dirección IP se ha asignado a una conexión de red determinada.
Use la clase Win32_NetworkAdapter y la propiedad NetConnectionID para determinar la dirección MAC de la conexión de red. A continuación, use la clase Win32_NetworkAdapterConfiguration para buscar la dirección IP asociada a la dirección MAC.
VB
strComputer = "." Set objWMIService = GetObject(_ "winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_NetworkAdapter " _ & "Where NetConnectionID = " & _ "'Local Area Connection 2'")
For Each objItem in 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
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
... se determina la dirección MAC de un adaptador de red.
Use la clase Win32_NetworkAdapterConfiguration y compruebe el valor de la propiedad IPAddress. Se devuelve como una matriz, así que utilice un bucle For-Each para obtener el 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"}
... se configura un equipo para empezar a obtener su dirección IP a través de 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
... se le asigna a un equipo una dirección IP estática.
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 puede devolver datos para equipos que tienen direcciones IPv4 e 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