Interfaz de Windows para monitoreo y notificación
El Instrumental de administración de Windows ( WMI ) consiste en un conjunto de extensiones del Modelo de controladores de Windows que proporciona una interfaz de sistema operativo a través de la cual los componentes instrumentados proporcionan información y notificaciones. WMI es la implementación de Microsoft de los estándares Web-Based Enterprise Management (WBEM) y Common Information Model (CIM) del Distributed Management Task Force (DMTF).
WMI permite que los lenguajes de programación (como VBScript o Windows PowerShell ) administren computadoras personales y servidores de Microsoft Windows , tanto de forma local como remota. WMI viene preinstalado en los sistemas operativos Windows 2000 a Windows 11. Está disponible como descarga para Windows NT y [1] Windows 95 a Windows 98. [ 2]
Microsoft también proporciona una interfaz de línea de comandos para WMI llamada Windows Management Instrumentation Command-line ( WMIC ). [3] Sin embargo, WMIC está obsoleto a partir de Windows 10, versión 21H1 , Windows 11 y Windows Server 2022. [ 4]
Propósito de WMI
El objetivo de WMI es definir un conjunto propietario de especificaciones independientes del entorno que permiten compartir información de gestión entre aplicaciones de gestión. WMI prescribe estándares de gestión empresarial y tecnologías relacionadas para Windows que funcionan con estándares de gestión existentes, como Desktop Management Interface (DMI) y SNMP . WMI complementa estos otros estándares proporcionando un modelo uniforme. Este modelo representa el entorno gestionado a través del cual se puede acceder a los datos de gestión de cualquier fuente de una manera común.
Proceso de desarrollo
Debido a que WMI abstrae las entidades manejables con 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:
- Crear el modelo de entidad manejable
- Definir un modelo
- Implementar el modelo
- Crear el proveedor WMI
- Determinar el tipo de proveedor a implementar
- Determinar el modelo de hosting del proveedor
- Cree la plantilla de proveedor con el asistente ATL
- Implementar la lógica del código en el proveedor
- Registrar el proveedor con WMI y el sistema
- Probar el proveedor
- Crear código de muestra para el consumidor.
Importancia de los proveedores WMI
Desde el lanzamiento de la primera implementación de WMI durante la era de Windows NT 4.0 SP4 (como una descarga fuera de banda), Microsoft ha agregado constantemente proveedores de WMI a Windows:
Muchos clientes han interpretado el crecimiento del número de proveedores como una señal de que WMI se ha convertido en Microsoft en la capa de gestión "ubicua" de Windows, aunque Microsoft nunca ha hecho explícito este compromiso.
Debido a la exposición cada vez mayor de datos de gestión a través de WMI en Windows, las personas en el campo de la gestión de sistemas de TI comenzaron a desarrollar scripts y procedimientos de automatización basados en WMI. [ cita requerida ] Más allá de las necesidades de scripting, la mayoría de los paquetes de software de gestión líderes, como MOM , SCCM , ADS, HP OpenView para Windows (HPOV), BMC Software y CA, Inc. están habilitados para WMI y son capaces de consumir y proporcionar información de WMI a través de varias interfaces de usuario . Esto permite que los administradores y operadores que no pueden crear scripts o programar sobre WMI disfruten de los beneficios de WMI sin siquiera aprender sobre él. Sin embargo, si lo desean, debido a que WMI es programable, les da la oportunidad de consumir información de WMI desde scripts o desde cualquier software de gestión empresarial compatible con WMI .
Características
Para aquellos que deseen desarrollar uno o varios proveedores WMI, WMI ofrece muchas funciones listas para usar. Estas son las ventajas más importantes:
- Interfaces de automatización:
debido a que WMI incluye un conjunto de interfaces de automatización listas para usar, todas las funciones de administración admitidas por un proveedor de WMI y su conjunto de clases obtienen soporte de scripts de manera gratuita y lista para usar. Más allá del diseño de clases de WMI y el desarrollo del proveedor, los equipos de desarrollo y pruebas de Microsoft no necesitan crear, validar o probar un modelo de scripts, ya que este ya está disponible en WMI. - Interfaces de administración de .NET
: Debido a que elSystem.Management
espacio de nombres [7] se basa en la infraestructura COM / DCOM existente , el proveedor WMI creado y su conjunto de clases WMI se vuelven automáticamente disponibles para todas las aplicaciones .NET independientemente del lenguaje utilizado (por ejemplo, C# , VB.NET ). Más allá del diseño de la clase WMI y el desarrollo del proveedor, como en el caso de los scripts, los equipos de desarrollo y pruebas de Microsoft no necesitan crear, validar y probar nuevos ensambles para admitir un nuevo espacio de nombres en .NET Framework, ya que este soporte ya está disponible en forma gratuita desde WMI. - Interfaces de programación COM/DCOM de C/C++:
como la mayoría de los componentes de Windows, los programadores COM / DCOM pueden aprovechar las características del proveedor que desarrollan en el nivel de interfaces COM/DCOM. Al igual que en entornos anteriores (scripting y .NET Framework ), un consumidor COM/DCOM solo necesita interactuar con el conjunto estándar de interfaces COM de WMI para aprovechar las capacidades del proveedor WMI y su conjunto de clases WMI compatibles. Para que toda la información de administración esté disponible desde las API nativas, el desarrollador del proveedor WMI solo necesita interactuar con un conjunto de interfaces COM de WMI predefinidas. Esto hará que la información de administración esté disponible en el nivel COM de WMI automáticamente. Además, el modelo de objetos de la interfaz COM de scripting es muy similar al modelo de objetos de la interfaz COM/DCOM, lo que facilita que los desarrolladores se familiaricen con la experiencia de scripting. - Capacidades de comunicación remota a través de DCOM y SOAP :
más que simplemente ofrecer capacidades COM locales, ya que la administración se basa en la comunicación remota , WMI ofrece el transporte DCOM. Además, el transporte SOAP estará disponible en Windows Server 2003 R2 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 un conjunto específico de interfaces que manejan solicitudes/respuestas SOAP. La ventaja para el desarrollador del proveedor WMI es que cuando expone todas sus características a través de WMI, Windows Remote Management /WS-Management puede a su vez consumir esa información también (los objetos integrados en instancias WMI no son compatibles con Windows Server 2003 R2. Sin embargo, es un objetivo para Vista). Todas las capas de WS-Management y la asignación del modelo de datos CIM a SOAP se obtienen de forma gratuita a través de la solución WMI/WS-Management. En caso de que sea necesario utilizar DCOM, su implementación requiere la presencia de una DLL proxy implementada en cada máquina cliente. Como WMI está disponible en el sistema operativo Windows desde Windows 2000, estos problemas se eliminan. - Compatibilidad con consultas:
WMI ofrece compatibilidad con consultas WQL [8] de manera predeterminada. Esto significa que si un proveedor no está diseñado para admitir consultas, WMI lo admite mediante una técnica de enumeración fuera del proveedor. - Capacidades de generación de eventos:
WMI ofrece la capacidad de notificar a un suscriptor sobre cualquier evento que le interese. WMI utiliza el lenguaje de consulta WMI (WQL) para enviar consultas de eventos WQL y define el tipo de eventos que se devolverán. El mecanismo de generación de eventos, con todas las devoluciones de llamadas relacionadas , es parte de las interfaces de automatización y COM/DCOM de WMI. Cualquiera que escriba un proveedor WMI puede beneficiarse de esta funcionalidad sin costo para sus clientes. Dependerá del consumidor decidir cómo desea consumir la información de administración expuesta por el proveedor WMI y su conjunto relacionado de clases WMI. - Generador de plantillas de código:
Para acelerar el proceso de escritura de un proveedor WMI que incluya todas las interfaces COM/DCOM y las definiciones relacionadas, el equipo de WMI desarrolló el Asistente WMI ATL para generar la plantilla de código que implementa un 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á interconectar las interfaces COM/DCOM predefinidas para el proveedor WMI con su conjunto de API nativas que recuperan la información de gestión para exponerla. El ejercicio consiste en llenar los "vacíos" en el código del proveedor para crear la lógica de interconexión deseada. - Predictibilidad:
La predictibilidad es una preocupación importante para los profesionales de TI porque define la capacidad de alguien que tiene experiencia con un conjunto de interfaces que administran un componente de Windows para aplicar este conocimiento de inmediato, de manera intuitiva, a cualquier otro componente de Windows administrable sin tener que volver a aprender todo desde cero. La predictibilidad para un cliente es una ganancia real, ya que aumenta el retorno de la inversión ( ROI ). Una persona que se enfrenta a una situación así simplemente espera que las cosas funcionen de la misma manera en función de su experiencia previa. El aumento constante de las interfaces de programación COM/scriptables tiene un gran impacto en la predictibilidad, ya que esto dificulta que los clientes automaticen, administren Windows y aprovechen su conocimiento existente. WMI con CIM aborda este problema al exponer siempre el mismo modelo de objeto de programación (COM/DCOM, Automation, .NET) sea cual sea la entidad administrable. - Proteger las inversiones de los clientes existentes:
Proteger la inversión de los clientes y socios motiva a los clientes a invertir en tecnologías. Así como Microsoft invirtió mucho estos últimos años en desarrollar proveedores de WMI, los clientes y socios invirtieron en herramientas que aprovechan las capacidades de WMI de Windows. Por lo tanto, naturalmente continúan explotando estas capacidades en lugar de tener que usar un nuevo conjunto de interfaces específicas para cada componente administrable de Windows. Un conjunto específico de interfaces significa tener un conjunto específico de agentes o software desarrollado internamente basado en un nuevo modelo o conjunto de interfaces especialmente dedicado a un componente o tecnología. Al aprovechar las capacidades de WMI hoy, los clientes y socios pueden aprovechar la inversión de trabajo realizada en el pasado y, al mismo tiempo, minimizar sus costos en desarrollos, curvas de aprendizaje y nuevos descubrimientos. Esto también tendrá un gran impacto en la estabilidad y confiabilidad de su infraestructura a medida que continúan aprovechando una implementación existente con una tecnología mejorada. - Proporcionar un modelo de administración lógico y unificado:
como se describió brevemente en la introducción, este modelo se basa en un estándar de la industria llamado CIM definido por el DMTF (https://www.dmtf.org/). El esquema basado en clases de CIM está definido por un consorcio de constructores y desarrolladores de software que cumple con los requisitos de la industria. Esto implica que no solo Microsoft aprovecha las capacidades de WMI, sino que también cualquier otro constructor o desarrollador de terceros escribe su propio código para adaptarse al modelo. Por ejemplo, Intel está haciendo esto para algunos de sus adaptadores y software de controladores de red. HP está aprovechando los proveedores de WMI existentes e implementando sus propios proveedores de WMI en su software HP Open View Enterprise Management . IBM consume WMI de la suite de gestión Tivoli , MOM y SMS también consumen y proporcionan información de WMI. Por último, Windows XP SP2 aprovecha WMI para obtener información sobre el estado del software antivirus y los firewalls.
Herramientas WMI
Algunas herramientas WMI también pueden resultar útiles durante las fases de diseño y desarrollo. Estas herramientas son:
- El compilador MOF (MOFComp.exe): El compilador de Managed Object Format (MOF) analiza un archivo que contiene instrucciones de Managed Object Format y agrega las clases e instancias de clase definidas en el archivo al repositorio CIM. El formato MOF es una sintaxis específica para definir la representación de clase CIM en un archivo ASCII (por ejemplo, MIB es para SNMP lo que los archivos MOF son para CIM).
MOFComp.exe
se 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: Las herramientas administrativas de WMI se componen de cuatro herramientas: WMI CIM Studio, WMI Object Browser, WMI Event Registration y WMI Event Viewer. La herramienta más importante para un desarrollador de proveedores de WMI es WMI CIM Studio, ya que ayuda en 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 proporciona la capacidad de:
- Conéctese a un sistema elegido y explore el repositorio CIM en cualquier espacio de nombres disponible.
- Busque clases por su nombre, por sus descripciones o por nombres de propiedades.
- Revise las propiedades, métodos y asociaciones relacionadas con una clase determinada.
- Vea las instancias disponibles para una clase dada del sistema examinado.
- Realizar consultas en el lenguaje WQL.
- Generar un archivo MOF basado en las clases seleccionadas.
- Compila un archivo MOF para cargarlo en el repositorio CIM.
- WinMgmt.exe:
WinMgmt.exe
no es una herramienta; es el ejecutable que implementa el servicio WMI Core. En la familia de sistemas operativos Windows NT , WMI se ejecuta como un servicio. En equipos que ejecutan Windows 98, Windows 95 o Windows Me, WMI se ejecuta como una aplicación. En la familia de sistemas operativos Windows NT, también es posible ejecutar este ejecutable como una aplicación, en cuyo caso, el ejecutable se ejecuta en el contexto de usuario actual. Para ello, primero se debe detener el servicio WMI. El ejecutable admite algunos parámetros que pueden resultar útiles al iniciar WMI como un servicio o como una aplicación. Los desarrolladores de proveedores WMI que deseen depurar sus proveedores básicamente necesitan ejecutar el servicio WMI como una aplicación. [9] - WBEMTest.exe:
WBEMTest.exe
es una herramienta de prueba de WMI que se entrega junto con WMI. Esta herramienta permite que un administrador o un desarrollador realice 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, esta herramienta no cuenta con soporte oficial de Microsoft. WBEMTest ofrece la posibilidad de:- 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.
- Ejecute cada operación WMI de forma asincrónica, sincrónica o semiasincrónica.
- La herramienta de línea de comandos WMI (WMIC): WMIC es una herramienta de línea de comandos diseñada para facilitar la recuperación de información WMI sobre un sistema mediante el uso de algunas palabras clave simples (alias). WMIC.exe está disponible en todas las versiones de Windows desde Windows XP. Al escribir
wmic /?
en la línea de comandos, se muestra una lista completa de los parámetros y palabras clave. (En Windows 11, wmic /?
se muestra "WMIC está obsoleto", seguido del texto de ayuda).- Existe un puerto Linux de la herramienta de línea de comandos WMI, escrita en Python, basada en Samba4 llamada
wmi-client
[10]
- WBEMDump.exe: WBEMDump es una herramienta que se entrega con el SDK de la plataforma . Esta herramienta de línea de comandos viene con su propio proyecto de Visual C++ . La herramienta puede mostrar las clases, instancias o ambas del repositorio CIM. Es posible recuperar la misma información que la que se recupera con WMIC.
WBEMDump.exe
requiere conocimientos más específicos sobre WMI, ya que no abstrae WMI como WMIC. Sin embargo, se ejecuta en Windows NT 4.0 y Windows 2000. También es posible ejecutar métodos expuestos por clases o instancias. Incluso si no es una herramienta WMI estándar que se entrega con la instalación del sistema, esta herramienta puede ser bastante útil para explorar el repositorio CIM y las características de WMI. - WMIDiag.vbs: La herramienta de diagnóstico WMI es un VBScript que se puede descargar desde Microsoft aquí y es una herramienta para probar y validar WMI en Windows 2000 y versiones posteriores. La descarga incluye documentación bastante completa y la herramienta admite numerosos parámetros. Cuando se ejecuta, 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 enumera los proveedores registrados en la máquina (PROVEEDORES, también en formato de valores separados por comas). El archivo de informe que se genera incluye una lista de los problemas identificados y las posibles formas de solucionarlos.
- Explorador WMI: La herramienta Explorador WMI es un programa de código abierto y disponible gratuitamente que se puede descargar aquí y es una herramienta para enumerar y consultar proveedores WMI en una interfaz gráfica de usuario .
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 una Win32_LogicalDisk
en el caso de una unidad de disco o una Win32_Process
, como un programa en ejecución como Notepad.exe
.
Este ejemplo muestra cómo MSNdis_80211_ServiceSetIdentifier
se utiliza la clase WMI para encontrar el SSID de la red Wi-Fi a la que está conectado actualmente el sistema en el lenguaje C#:
ManagementClass mc = new ManagementClass ( "root\\WMI" , "MSNdis_80211_ServiceSetIdentifier" , null ); Colección de objetos de gestión moc = mc . GetInstances (); foreach ( ManagementObject mo en moc ) { cadena wlanCard = ( cadena ) mo [ "InstanceName" ]; bool activo ; si ( ! bool . TryParse (( cadena ) mo [ "Activo" ], fuera activo )) { activo = falso ; } byte [] ssid = ( byte []) mo [ "Ndis80211SsId" ]; }
La MSNdis_80211_ServiceSetIdentifier
clase WMI sólo es compatible con Windows XP y Windows Server 2003.
Extensiones del controlador WMI
Las extensiones WMI de WDM proporcionan instrumentación a nivel de núcleo , como la publicación de información, la configuración de los ajustes de los dispositivos, el suministro de notificaciones de eventos de 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 . Las extensiones forman parte de la arquitectura WDM; sin embargo, tienen una amplia utilidad y también se pueden utilizar con otros tipos de controladores (como SCSI y NDIS ).
El servicio WMI Driver Extensions supervisa todos los controladores y proveedores de seguimiento de eventos que están configurados para publicar información de seguimiento de eventos o WMI. Los datos de hardware instrumentados se proporcionan mediante controladores instrumentados para extensiones WMI para WDM. Las extensiones WMI para WDM ofrecen un conjunto de interfaces de controladores de dispositivos de Windows para instrumentar datos dentro de los modelos de controladores nativos de Windows, de modo que los OEM y los 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 controladores WMI no son compatibles con Windows Vista y sistemas operativos posteriores. [11]
Véase también
Referencias
- ^ "WMI Redistributable for Windows NT". microsoft.com . Archivado desde el 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 desde el 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 desde el original el 2 de mayo de 2007.
- ^ "WMIC: utilidad de línea de comandos de WMI". Microsoft. 8 de marzo de 2023. Archivado desde el original el 14 de octubre de 2023.
- ^ "Manejabilidad del cliente de Windows Vista". microsoft.com . Archivado desde el 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 desde el original el 30 de septiembre de 2018 . Consultado el 30 de septiembre de 2018 .
- ^ "Espacio de nombres System.Management". msdn2.microsoft.com . Archivado desde el original el 16 de abril de 2008. Consultado el 4 de mayo de 2018 .
- ^ "Lenguaje de consulta WMI (WQL) a través de PowerShell". ravichaganti.com . 1 de mayo de 2011. Archivado desde el original el 12 de octubre de 2017 . Consultado el 4 de mayo de 2018 .
- ^ "Tareas de WMI: software informático (Windows)". msdn2.microsoft.com . Archivado desde el original el 6 de abril de 2008. Consultado el 4 de mayo de 2018 .
- ^ D'Vine, Rhonda. «Ubuntu – Error». packages.ubuntu.com . Archivado desde el original el 2 de mayo de 2017. Consultado el 4 de mayo de 2018 .
- ^ "La historia de los desarrolladores de Windows Vista y Windows "Longhorn" Server: libro de recetas de compatibilidad de aplicaciones". msdn2.microsoft.com . Archivado desde el original el 21 de abril de 2008 . Consultado el 4 de mayo de 2018 .
Enlaces externos
- WMI en la red de desarrolladores de Microsoft
- Terminología CIM
- Descripción general y antecedentes de WMI
- Descripción general de WMI y CIM
- Cómo la compatibilidad mejorada con WMI convierte a PowerShell en el mejor entorno para usar y crear scripts de WMI
- Webcast de Microsoft WMI
- Creador de código WMI