Creación de clientes de WMI

WMI proporciona una infraestructura de administración de sistemas estandarizada que se puede usar con varios clientes diferentes. Estos clientes van desde la herramienta de línea de comandos wmic.exe a System Center Operations Manager. Puede escribir sus propios clientes de WMI mediante la API de scripting de WMI, la API nativa de C++ o mediante los tipos del espacio de nombres de la biblioteca de clases System.Management de .NET Framework.

Creación de un cliente de WMI

La funcionalidad principal de WMI consiste en recuperar objetos del repositorio de WMI y examinar las propiedades de esos objetos. También puede optar por actualizar esas propiedades o llamar a métodos en ellas. En los ejemplos siguientes se muestra cómo realizar una tarea básica de administración de WMI: recuperar el nombre del equipo local.

Término Descripción
Creación de un cliente con PowerShell
WMI y PowerShell están estrechamente integrados; por lo tanto, recuperar objetos de WMI con PowerShell es simplemente cuestión de llamar al cmdlet Get-WmiObject. Tenga en cuenta que, por motivos de coherencia, el primer fragmento de código indica explícitamente muchos de los valores predeterminados; en el segundo se supone que los valores predeterminados son correctos.

PowerShell
#explicitly states many of the default parameters $myComputer = Get-WmiObject -ComputerName "." -Namespace "root\cimv2" -Query "SELECT * FROM Win32_ComputerSystem" foreach ($computer in $myComputer) { "System Name: " + $computer.name } 

#assumes the default values are correct Get-WmiObject Win32_ComputerSystem | Format-Table "Name"

Creación de un cliente con VBScript

VBScript fue el lenguaje de scripting original de uso común con WMI. Aunque PowerShell se ha hecho más popular, muchos de los ejemplos de código existentes de esta documentación se han escrito en VBScript. Tenga en cuenta que este ejemplo de VBScript concreto indica explícitamente la ruta de acceso a la máquina local, así como el nivel de suplantación; aunque no es necesario, suele ser un procedimiento recomendado.

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objItem in colItems
    Wscript.Echo "Computer Name: " & objItem.Name
Next

Creación de un cliente con C# (Microsoft.Management.Infrastructure)

Este espacio de nombres contiene la solución actual para acceder a WMI con código administrado y se conoce como Infraestructura de administración de Windows (MI o WMIv2). Actualmente, MI es la tecnología admitida para crear clientes de administración administrados. Para más información, consulte Implementación de un cliente de MI administrado e Implementación de un cliente de MI nativo.

C#
using Microsoft.Management.Infrastructure; ... CimSession session = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); 

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

Creación de un cliente con C# (System.Management)

Este espacio de nombres contiene la solución original para acceder a WMI con código administrado. Aunque las clases System.Management siguen estando disponibles, las clases Microsoft.Management.Infrastructure suelen ser más eficientes y se escalan mejor. Por lo tanto, se recomienda usar las clases de MI en lugar de las clases de WMI originales.

C#
using Microsoft.Management.Infrastructure; ... CimSession session = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); 

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

En la siguiente tabla se enumeran los temas incluidos en esta sección.

Tema Descripción
Conexión a WMI en un equipo remoto Describe una serie de problemas que surgen cuando los clientes usan la infraestructura de WMI en un equipo remoto.
Tareas de WMI para scripts y aplicaciones Muestra el código de cliente de WMI de ejemplo.
Crear una aplicación WMI o un script Proporciona información sobre cómo crear varios clientes de WMI.
Supervisar datos de rendimiento Describe cómo usar WMI para supervisar datos de rendimiento.
Recepción de un evento de WMI Describe cómo ver eventos de WMI.
Supervisión de eventos Describe cómo supervisar eventos de WMI.
Consulta con WQL Introduce el Lenguaje de consulta de WMI (WQL).
Consulta del estado de características opcionales En Windows 7, WMI implementaba la clase Win32_OptionalFeature. Esta clase recupera el estado de las características opcionales presentes en un equipo.
Descripción de la ubicación de un objeto de WMI Se centra en la sintaxis para describir la ubicación de una entidad administrada de WMI.
Acceso a otras características del sistema operativo con WMI Describe cómo escribir clientes de WMI que acceden a controladores de dispositivos, Active Directory y dispositivos SNMP.
Acceso a datos en el espacio de nombres de interoperabilidad Los proveedores de asociación permiten a los clientes de Instrumental de administración de Windows (WMI) atravesar y recuperar perfiles e instancias de clase asociadas de diferentes espacios de nombres.
Manipular información de clase e instancia Describe las tareas comunes que deben realizar los clientes de WMI.
Vinculación de clases Describe el proveedor de vistas y cómo se puede usar para reunir información de varias clases de WMI.
Modificación del Registro del sistema Describe cómo los clientes de WMI pueden usar WMI para administrar la información del Registro del sistema.