La Instrumentación de administración de Windows ( WMI ) es un conjunto de extensiones del Modelo de controladores de Windows que proporciona una interfaz del sistema operativo a través de la cual los componentes instrumentados ofrecen información y notificaciones. WMI es la implementación de Microsoft de los estándares de Administración empresarial basada en web (WBEM) y Modelo de información común (CIM) del Grupo de trabajo de administración distribuida (DMTF).
WMI permite que lenguajes de scripting (como VBScript o PowerShell ) administren equipos personales y servidores de Microsoft Windows , tanto local como remotamente. WMI viene preinstalado en Windows 2000 y versiones posteriores. Está disponible para su descarga en Windows NT 4.0 , [ 1 ] Windows 95 y Windows 98. [ 2 ]
Windows también incluía la herramienta de línea de comandos de instrumentación de administración de Windows ( WMIC ), una utilidad de línea de comandos para interactuar con WMI. [ 3 ] Sin embargo, a partir de Windows 10, versión 21H1 y Windows Server 2022 , WMIC quedó obsoleto en favor de PowerShell . [ 4 ]
Propósito de WMI
El objetivo de WMI es definir un conjunto de especificaciones propietarias e independientes del entorno que permitan compartir información de administración entre aplicaciones de administración. WMI prescribe estándares de administración empresarial y tecnologías relacionadas para Windows que funcionan con los estándares de administración existentes, como la Interfaz de administración de escritorio (DMI) y el Protocolo simple de administración de red (SNMP). WMI complementa estos otros estándares al proporcionar un modelo uniforme para acceder a los datos de administración desde cualquier origen.
Proceso de desarrollo
Debido a que WMI abstrae las entidades gestionables con el Modelo de Información Común (CIM) y una colección de proveedores, el desarrollo de un proveedor implica varios pasos. Los pasos principales se pueden resumir de la siguiente manera:
- Cree el modelo de entidad manejable.
- Defina un modelo
- Implementar el modelo
- Cree el proveedor WMI
- Determinar el tipo de proveedor a implementar
- Determina el modelo de alojamiento del proveedor.
- Cree la plantilla de proveedor con el asistente ATL.
- Implemente la lógica del código en el proveedor.
- Registre al proveedor con WMI y el sistema.
- Pruebe al proveedor
- Crear código de ejemplo para el consumidor.
Proveedores
Desde el lanzamiento de la primera implementación de WMI durante la era de Windows NT 4.0 SP4 (como descarga fuera de banda), Microsoft ha añadido constantemente proveedores de WMI a Windows:
- En Windows NT 4.0 , el paquete WMI incluía 15 proveedores.
- Windows 2000 se distribuyó con 29 proveedores WMI.
- Windows Server 2003 incluía aproximadamente 80 proveedores WMI.
- Windows Vista incluye 13 nuevos proveedores WMI, [ 5 ] por lo que se distribuye con aproximadamente 100 proveedores.
- Windows Server 2008 incluye más proveedores para IIS 7 , PowerShell y virtualización .
- Windows 10 agrega 47 proveedores para el servicio de administración de dispositivos móviles (MDM). [ 6 ]
Muchos clientes han interpretado el aumento en el número de proveedores como una señal de que Microsoft concibe WMI como la capa de administración omnipresente de Windows.
Más allá de las necesidades de scripting, la mayoría de las soluciones de gestión líderes, como Microsoft Operations Manager (MOM), System Center Configuration Manager (SCCM), Active Directory Services (ADS), HP OpenView (HPOV) y las diversas ofertas de BMC Software y CA, Inc. , son compatibles con WMI, es decir, pueden consumir y proporcionar información WMI. Esto permite que los administradores que carecen de conocimientos de programación WMI se beneficien de esta tecnología.
Características
WMI ofrece muchas funciones listas para usar. Estas son las ventajas más importantes:
- Interfaces de automatización: WMI incluye un conjunto de interfaces de automatización listas para usar. Más allá del diseño de la clase WMI y el desarrollo del proveedor, los equipos de desarrollo y pruebas de Microsoft no necesitan crear, validar ni probar un modelo de scripting, ya que está disponible en WMI.
- Interfaces de administración de .NET : El
System.Managementespacio de nombres [ 7 ] pone las clases WMI a disposición de todas las aplicaciones y scripts de .NET escritos en C# o PowerShell . Más allá del diseño de la clase WMI y el desarrollo del proveedor, los equipos de desarrollo y pruebas de Microsoft no necesitan crear, validar ni probar nuevos ensamblados para admitir un nuevo espacio de nombres en .NET, ya que esta compatibilidad ya está disponible a través de WMI. - Interfaces COM: El código no administrado en Microsoft Windows (por ejemplo, aplicaciones escritas en C o C++ ) puede interactuar con el conjunto estándar de interfaces WMI para el Modelo de Objetos Componentes (COM) y acceder a los proveedores WMI y sus clases compatibles. Los desarrolladores de proveedores WMI pueden utilizar las mismas interfaces COM en sus proyectos para proporcionar dichas clases.
- Capacidades de acceso remoto a través de DCOM y SOAP: Además de la administración local mediante COM, WMI admite el acceso remoto a través de Distributed COM (DCOM) y SOAP . Este último está disponible en Windows Server 2003 R2 y versiones posteriores, a través de la iniciativa WS-Management liderada por Microsoft , Intel , Sun Microsystems y Dell . Esta iniciativa permite ejecutar cualquier script de forma remota o consumir datos WMI a través de interfaces que manejan solicitudes y respuestas SOAP. WS-Management puede consumir todo lo que genera un proveedor WMI, aunque los objetos incrustados en instancias WMI no fueron compatibles hasta Windows Vista . Posteriormente, WS-Management se convirtió en una parte integral de PowerShell. A diferencia del acceso remoto basado en SOAP, el acceso remoto basado en DCOM requiere una DLL proxy implementada en cada máquina cliente.
- Compatibilidad con consultas: WMI ofrece compatibilidad con consultas WQL . [ 8 ] Esto significa que WMI aún puede filtrar los resultados de un proveedor que no implementa filtrado ni consultas.
- Funcionalidades de gestión de eventos: WMI puede notificar a un suscriptor sobre eventos de interés. WMI utiliza WQL para enviar consultas de eventos y definir el tipo de eventos que se devolverán. Cualquier desarrollador de un proveedor WMI puede beneficiarse de esta funcionalidad sin coste alguno para sus clientes. Corresponderá a los usuarios decidir cómo desean consumir la información de gestión que expone el proveedor WMI.
Para agilizar el proceso de creación de un proveedor WMI, el equipo de WMI desarrolló el Asistente ATL de WMI para generar la plantilla de código que implementa dicho proveedor. El código generado se basa en el modelo de clases WMI diseñado inicialmente por el desarrollador. El desarrollador del proveedor WMI podrá conectar las interfaces COM o DCOM predefinidas para el proveedor WMI con su conjunto de API nativas, recuperando así la información de administración que se expondrá.
WMI se basa en un estándar de la industria llamado Modelo de Información Común (CIM), definido por el Grupo de Trabajo de Gestión Distribuida (DMTF). El esquema basado en clases de CIM es definido por un consorcio de fabricantes y desarrolladores de software para satisfacer las necesidades de la industria. Cualquier desarrollador puede escribir código que se ajuste a este modelo. Por ejemplo, Intel desarrolla proveedores WMI para sus adaptadores de red . HP aprovechó los proveedores WMI existentes y desarrolló proveedores WMI personalizados para sus soluciones de gestión empresarial OpenView . La suite de gestión Tivoli de IBM utiliza WMI. A partir de Windows XP SP2 , Microsoft utiliza WMI para obtener información de estado del software antivirus y los firewalls .
Servicio
En la familia de sistemas operativos Windows NT, WMI se ejecuta como un servicio de Windows llamado WinMgmt. En la familia Windows 9x , WMI se ejecuta en el contexto del WinMgmt.exearchivo ejecutable. Tanto en la familia Windows 9x como en la familia Windows NT, WinMgmt.exeestá disponible como una utilidad de línea de comandos para dar servicio al repositorio WMI. [ 9 ]
Herramientas WMI
Microsoft proporciona las siguientes herramientas WMI para desarrolladores y profesionales de TI:
- Compilador MOF (
MOFComp.exe): El compilador de formato de objeto administrado (MOF) analiza un archivo que contiene instrucciones MOF y agrega las clases y objetos definidos en el archivo al repositorio CIM. El formato MOF es una sintaxis específica para definir la representación de clases CIM en un archivo ASCII . El rol de MOF para CIM es comparable al rol de MIB para SNMP .MOFComp.exese incluye en cada instalación de WMI. Cada definición existente en el repositorio CIM se define inicialmente en un archivo MOF. Los archivos MOF se encuentran en%SystemRoot%\System32\WBEM. Durante la configuración de WMI, se cargan en el repositorio CIM. - Herramientas administrativas de WMI: Este conjunto de herramientas consta de WMI CIM Studio, WMI Object Browser, WMI Event Registration y WMI Event Viewer. La herramienta más importante para un desarrollador de proveedores WMI es WMI CIM Studio, ya que facilita la creación inicial de clases WMI en el repositorio CIM. Utiliza una interfaz web para mostrar información y se basa en una colección de componentes ActiveX instalados en el sistema cuando se ejecuta por primera vez. WMI CIM Studio puede:
- Conéctese al sistema elegido y explore el repositorio CIM en cualquier espacio de nombres disponible.
- Busque clases por su nombre, por su descripción o por el nombre de la propiedad.
- Revise las propiedades, los métodos y las asociaciones relacionadas con una clase determinada.
- Consulte las instancias disponibles para una clase determinada del sistema examinado.
- Realizar consultas en el lenguaje WQL.
- Genera un archivo MOF basado en las clases seleccionadas.
- Compila un archivo MOF para cargarlo en el repositorio CIM.
WBEMTest.exeWBEMTest es una herramienta de prueba de WMI que se incluye con WMI. Esta herramienta permite a un administrador o desarrollador realizar la mayoría de las tareas desde una interfaz gráfica que WMI proporciona a nivel de API . Aunque está disponible en todos los sistemas operativos basados en Windows NT, Microsoft no ofrece soporte oficial para esta herramienta. WBEMTest permite:- Enumerar, abrir, crear y eliminar clases.
- Enumerar, abrir, crear y eliminar instancias de clases.
- Seleccione un espacio de nombres .
- Realizar consultas de datos y eventos.
- Ejecutar métodos asociados a clases o instancias.
- Ejecutar todas las operaciones WMI de forma asíncrona, síncrona o semi-asíncrona.
- La herramienta de línea de comandos WMI (WMIC) es una utilidad de scripting y automatización que permite la recuperación de información y la administración del sistema a través de WMI, utilizando algunas palabras clave simples (alias). WMIC.exe está disponible en todas las versiones de Windows desde Windows XP . A partir de Windows 10, versión 21H1 y Windows Server 2022 , WMIC está obsoleto en favor de PowerShell . [ 4 ] En Windows 11, versión 24H2 , WMIC no se instala de forma predeterminada. Una versión de WMIC para Linux,
wmi-client, está escrita en Python y se basa en Samba4 . [ 10 ] - WBEMDump.exe: Esta herramienta de línea de comandos forma parte del SDK de la plataforma y viene con un proyecto de Visual C++ correspondiente . Permite visualizar las clases, instancias o ambas del repositorio CIM. Es posible recuperar la misma información que WMIC.
WBEMDump.exeRequiere conocimientos más específicos sobre WMI, ya que no lo abstrae como WMIC. También permite ejecutar métodos expuestos por clases o instancias. Si bien no es una herramienta WMI estándar incluida en la instalación del sistema, puede resultar muy útil para explorar el repositorio CIM y las funcionalidades de WMI. - WMIDiag.vbs (descontinuado) : La herramienta de diagnóstico de WMI es un script VBScript para probar y validar WMI en Windows 2000 y versiones posteriores. Este script se podía descargar desde Microsoft hasta agosto de 2020. [ 11 ] La descarga incluye una documentación bastante completa y la herramienta admite numerosos parámetros. Al ejecutarse, generará hasta cuatro archivos de texto que: enumeran los pasos realizados (el archivo LOG), una descripción general de los resultados (archivo REPORT), un archivo de estadísticas (en formato de valores separados por comas) y, opcionalmente, un archivo que lista los proveedores registrados en la máquina (PROVIDERS, también en formato de valores separados por comas). El archivo de informe generado incluye una lista de los problemas identificados y posibles formas de solucionarlos.
Ejemplo de red inalámbrica
En .NET Framework , la clase ManagementClass representa una clase de administración del Modelo de Información Común (CIM). Una clase WMI puede ser, Win32_LogicalDisken el caso de una unidad de disco, o Win32_Process, como un programa en ejecución Notepad.exe.
Este ejemplo muestra cómo MSNdis_80211_ServiceSetIdentifierse utiliza la clase WMI para encontrar el SSID de la red Wi-Fi a la que el sistema está conectado actualmente en el lenguaje C#:
ManagementClass mc = new ManagementClass ( "root\\WMI" , "MSNdis_80211_ServiceSetIdentifier" , null ); ManagementObjectCollection moc = mc . GetInstances ();foreach ( ManagementObject mo in moc ) { string wlanCard = ( string ) mo [ "InstanceName" ]; bool active ; if ( ! bool . TryParse (( string ) mo [ "Active" ], out active )) { active = false ; } byte [] ssid = ( byte []) mo [ "Ndis80211SsId" ]; }La MSNdis_80211_ServiceSetIdentifierclase WMI solo es compatible con Windows XP y Windows Server 2003.
extensiones de controlador WMI
Las extensiones WMI para WDM proporcionan instrumentación a nivel de kernel , como la publicación de información, la configuración de ajustes de dispositivos, la notificación de eventos desde los controladores de dispositivos y la posibilidad de que los administradores establezcan la seguridad de los datos a través de un proveedor WMI conocido como proveedor WDM . Estas extensiones forman parte de la arquitectura WDM; sin embargo, tienen una amplia utilidad y también pueden utilizarse con otros tipos de controladores (como SCSI y NDIS ).
El servicio Extensiones de controlador WMI supervisa todos los controladores y proveedores de seguimiento de eventos configurados para publicar información WMI o de seguimiento de eventos. Los datos de hardware instrumentados se proporcionan mediante controladores instrumentados para las extensiones WMI para WDM. Las extensiones WMI para WDM ofrecen un conjunto de interfaces de controlador de dispositivo de Windows para instrumentar datos dentro de los modelos de controlador nativos de Windows, de modo que los fabricantes de equipos originales ( OEM) y los proveedores de hardware (IHV) pueden ampliar fácilmente el conjunto de datos instrumentados y agregar valor a una solución de hardware/software. Sin embargo, las extensiones de controlador WMI no son compatibles con Windows Vista ni con sistemas operativos posteriores. [ 12 ]
Otros ejemplos de uso de WMI
Performance Monitor y AIDA64 son ejemplos de cómo usar WMI para obtener información de monitorización del sistema operativo.
Véase también
Referencias
- ↑ "WMI Redistributable para Windows NT" . microsoft.com . Archivado del original el 24 de febrero de 2010. Consultado el 4 de mayo de 2018 .
- ↑ "WMI Redistributable para Windows 95 y Windows 98" . microsoft.com . Archivado del original el 23 de abril de 2007. Consultado el 4 de mayo de 2018 .
- ↑ "Descripción de la utilidad de línea de comandos de Instrumental de administración de Windows (WMI) (Wmic.exe)" . Archivado del original el 2 de mayo de 2007.
- 1 2 "WMIC: utilidad de línea de comandos WMI" . Microsoft. 8 de marzo de 2023. Archivado del original el 14 de octubre de 2023.
- ↑ "Administrabilidad del cliente de Windows Vista" . microsoft.com . Archivado del original el 3 de marzo de 2016. Consultado el 4 de mayo de 2018 .
- ↑ "Proveedores WMI compatibles con Windows 10" . Microsoft . 25 de junio de 2017. Archivado del original el 30 de septiembre de 2018. Consultado el 30 de septiembre de 2018 .
- ↑ "Espacio de nombres System.Management" . Biblioteca .NET . Microsoft . 7 de febrero de 2025 – vía Microsoft Learn .
- ↑ "Lenguaje de consulta WMI (WQL) a través de PowerShell" . ravichaganti.com . 1 de mayo de 2011. Archivado del original el 12 de octubre de 2017. Consultado el 4 de mayo de 2018 .
- ↑ White, Steven (3 de noviembre de 2023). "winmgmt" . Desarrollo de aplicaciones para Windows . Microsoft – vía Microsoft Learn .
- ↑ D'Vine, Rhonda. "Ubuntu – Error" . packages.ubuntu.com . Archivado del original el 2 de mayo de 2017. Consultado el 4 de mayo de 2018 .
- ↑ "Utilidad de diagnóstico WMI - Versión 2.2" . Centro de descargas . Microsoft . 24 de abril de 2015. Archivado del original el 6 de agosto de 2020.
- ↑ "La historia del desarrollador de Windows Vista y Windows "Longhorn" Server: Libro de recetas de compatibilidad de aplicaciones" . msdn2.microsoft.com . Archivado del original el 21 de abril de 2008. Consultado el 4 de mayo de 2018 .
Lecturas adicionales
- Snover, Jeffrey (26 de junio de 2006). "Soporte mejorado para WMI" . Blog de PowerShell . Microsoft – vía Dev Blogs.
Enlaces externos
- Sitio web oficial
- Creador de código WMI
- Sistemas de gestión
- Interfaces de programación de aplicaciones de Microsoft
- Gestión de redes
- Administración del sistema
- Comunicación y servicios de Windows
- Componentes de Windows
- Controladores de dispositivos
- BIOS