Interfaz de Windows para monitoreo y notificación.
El Instrumental de administración de Windows ( WMI ) consta de un conjunto de extensiones del modelo de controlador de Windows que proporciona una interfaz del sistema operativo a través de la cual los componentes instrumentados brindan 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 secuencias de comandos (como VBScript o PowerShell de Windows ) administren computadoras personales y servidores de Microsoft Windows , tanto de forma local como remota. WMI viene preinstalado en Windows 2000 hasta los sistemas operativos 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 Línea de comandos del Instrumental de administración de Windows ( WMIC ). [3] Sin embargo, WMIC está en desuso a partir de Windows 10, versión 21H1 , Windows 11 y Windows Server 2022 . [4]
Propósito de WMI
El propósito de WMI es definir un conjunto propietario de especificaciones 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 estándares de administració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 de forma común a los datos de gestión de cualquier fuente.
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 principales pasos 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.
- Registre el proveedor con WMI y el sistema.
- Probar el proveedor
- Cree un código de muestra para el consumidor.
Importancia de los proveedores de 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 [ ¿cuáles? ] 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 una exposición cada vez mayor de los 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 necesaria ] Más allá de las necesidades de secuencias de comandos, la mayoría de los paquetes de software de administració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 WMI a través de varias interfaces de usuario . Esto permite a los administradores y operadores que no son capaces de crear secuencias de comandos o programar sobre WMI disfrutar de los beneficios de WMI sin siquiera conocerlo. Sin embargo, si lo desean, dado que WMI admite secuencias de comandos, les brinda la oportunidad de consumir información WMI desde secuencias de comandos o desde cualquier software de administración empresarial compatible con WMI.
Características
Para alguien que esté dispuesto a desarrollar uno o varios proveedores de WMI, WMI ofrece muchas funciones listas para usar. Estas son las ventajas más importantes:
- Interfaces de automatización:
debido a que WMI viene con 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 secuencias de comandos de forma gratuita y lista para usar. Más allá del diseño de la clase WMI y el desarrollo del proveedor, los equipos de desarrollo y prueba de Microsoft no están obligados a crear, validar o probar un modelo de secuencias de comandos, ya que ya está disponible en WMI. - Interfaces de administración de .NET
: debido a que elSystem.Management
espacio de nombres [7] se basa en la conexión COM / DCOM existente, el proveedor WMI creado y su conjunto de clases WMI pasan a estar disponibles automáticamente para todas las aplicaciones .NET independientemente del lenguaje utilizado (por ejemplo, C# , VB.NET). ). Más allá del diseño de clases WMI y el desarrollo del proveedor, como para las secuencias de comandos, los equipos de desarrollo y prueba de Microsoft no están obligados a crear, validar y probar nuevos ensamblados para admitir un nuevo espacio de nombres en .NET Framework, ya que este soporte ya está disponible en WMI para gratis. - Interfaces de programación C/C++ COM/DCOM:
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 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 WMI predefinidas. Esto hará que la información de administración esté disponible en el nivel WMI COM automáticamente. Además, el modelo de objetos de la interfaz COM de secuencias de comandos es muy similar al modelo de objetos de la interfaz COM/DCOM, lo que facilita que los desarrolladores se familiaricen con la experiencia de las secuencias de comandos. - 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 tiene que ver con la comunicación remota , WMI ofrece 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, la administración remota de Windows /WS-Management puede a su vez consumir esa información también (los objetos incrustados en instancias WMI no son compatibles con Windows Server 2003 R2). sin embargo, un objetivo para Vista). Todas las capas para WS-Management y el mapeo del modelo de datos CIM a SOAP se obtienen de forma gratuita desde la solución WMI/WS-Management. En caso de que se deba utilizar DCOM, la implementación de DCOM 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. - Soporte para consultas:
WMI ofrece soporte para consultas WQL [8] listas para usar. 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 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 eventos, con todas las devoluciones de llamadas relacionadas , es parte de WMI COM/DCOM y las interfaces de automatización. Cualquiera que escriba un proveedor WMI puede beneficiarse de esta funcionalidad sin costo alguno para sus clientes. Dependerá del consumidor decidir cómo quiere 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, incluidas todas las interfaces COM/DCOM y 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 clase 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 recuperando la información de administración para exponer. El ejercicio consiste en llenar los “vacíos” en el código del proveedor para crear la lógica de interfaz deseada. - Previsibilidad:
la previsibilidad es una preocupación importante para los profesionales de TI porque define la capacidad de alguien que tiene experiencia con un conjunto de interfaces administrando 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. arriba. La previsibilidad 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 basándose en su experiencia previa. El aumento constante de interfaces de programación/scriptables COM tiene un gran impacto en la previsibilidad, ya que esto dificulta que los clientes automaticen, administren Windows y aprovechen sus conocimientos existentes. WMI con CIM aborda este problema exponiendo siempre el mismo modelo de objetos de programación (COM/DCOM, Automatización, .NET) cualquiera que sea la entidad manejable. - Proteger las inversiones de los clientes existentes:
proteger las inversiones de los clientes y socios motiva a los clientes a invertir en tecnologías. Como Microsoft invirtió mucho en los últimos años en escribir proveedores de WMI, los clientes y socios invirtieron en herramientas que aprovechan las capacidades WMI de Windows. Por lo tanto, naturalmente continúan explotando estas capacidades en lugar de tener que utilizar un nuevo conjunto de interfaces específicas para cada componente manejable 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 en 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úen aprovechando una implementación existente con una tecnología mejorada. - Proporcionar un modelo de administración lógico y unificado:
como se describió brevemente anteriormente en la introducción, este modelo se basa en un estándar de la industria llamado CIM definido por DMTF (https://www.dmtf.org/). El esquema basado en clases CIM está definido por un consorcio de constructores y desarrolladores de software que cumple con los requisitos de la industria. Esto implica que no sólo Microsoft aprovecha las capacidades de WMI, sino que también otros constructores o desarrolladores externos escriben su propio código para encajar en el modelo. Por ejemplo, Intel está haciendo esto para algunos de sus software y adaptadores de controladores de red. HP está aprovechando los proveedores WMI existentes e implementando sus propios proveedores 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 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 formato de objeto administrado (MOF) analiza un archivo que contiene declaraciones de formato de objeto administrado 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 clases CIM en un archivo ASCII (por ejemplo, MIB son para SNMP lo que los archivos MOF son para CIM).
MOFComp.exe
está incluido 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. - Las herramientas administrativas de WMI: Las herramientas administrativas de WMI están compuestas por 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 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 brinda 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 determinada del sistema examinado.
- Realizar Consultas en el lenguaje WQL.
- Genere un archivo MOF basado en clases seleccionadas.
- Compile 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 computadoras 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 modificadores que pueden resultar útiles al iniciar WMI como servicio o como aplicación. Los desarrolladores de proveedores WMI que quieran depurar sus proveedores esencialmente necesitan ejecutar el servicio WMI como una aplicación. [9] - WBEMTest.exe:
WBEMTest.exe
es una herramienta de prueba de WMI, que se entrega con WMI. Esta herramienta permite a un administrador o desarrollador realizar la mayoría de las tareas desde una interfaz gráfica que proporciona WMI a nivel API . Aunque está disponible en todos los sistemas operativos basados en Windows NT, Microsoft no admite oficialmente esta herramienta. WBEMTest proporciona la capacidad 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 modificadores y las palabras clave. (En Windows 11, wmic /?
muestra "WMIC está en desuso", seguido del texto de ayuda).- Existe una versión para 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 Platform SDK . 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 recuperada con WMIC.
WBEMDump.exe
requiere conocimientos más específicos sobre WMI, ya que no abstrae WMI como WMIC. Sin embargo, se ejecuta bajo 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 resultar muy útil para explorar el repositorio CIM y las funciones 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 superior. La descarga incluye documentación bastante completa y la herramienta admite numerosos modificadores. Cuando se ejecute, 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, una lista de archivos de 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 posibles formas de solucionarlos.
- WMI Explorer: La herramienta WMI Explorer es un programa de código abierto y disponible gratuitamente que se puede descargar aquí y es una herramienta para enumerar y consultar proveedores de 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 usa 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 = nueva ManagementClass ( "raíz\\WMI" , "MSNdis_80211_ServiceSetIdentifier" , nulo ); ManagementObjectCollection moc = mc . ObtenerInstancias (); foreach ( ManagementObject mo en moc ) { cadena wlanCard = ( cadena ) mo [ "NombreDeInstancia" ]; booleano activo ; if ( ! bool . TryParse (( cadena ) mo [ "Activo" ], fuera activo )) { activo = falso ; } byte [] ssid = ( byte []) mo [ "Ndis80211SsId" ]; }
La MSNdis_80211_ServiceSetIdentifier
clase WMI sólo se admite en Windows XP y Windows Server 2003.
Extensiones del controlador WMI
Las extensiones WMI para WDM proporcionan instrumentación a nivel de kernel, como publicar información, configurar ajustes del dispositivo, proporcionar notificaciones de eventos desde controladores de dispositivos y permitir a los administradores configurar la seguridad de los datos a través de un proveedor WMI conocido como proveedor WDM . Las extensiones son 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 monitorea todos los controladores y proveedores de seguimiento de eventos que están configurados para publicar WMI o información de seguimiento de eventos. Los datos de hardware instrumentados se proporcionan mediante controladores instrumentados para extensiones WMI para WDM. Las extensiones WMI para WDM proporcionan 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 puedan ampliar fácilmente el conjunto de datos instrumentados y agregar valor a una solución de hardware/software. Sin embargo, las extensiones del controlador WMI no son compatibles con Windows Vista y sistemas operativos posteriores. [11]
Ver también
Referencias
- ^ "WMI redistribuible para Windows NT". microsoft.com . Archivado desde el original el 24 de febrero de 2010 . Consultado el 4 de mayo de 2018 .
- ^ "WMI redistribuible 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 .
- ^ "Una descripción de la utilidad de línea de comandos del 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 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 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". paquetes.ubuntu.com . Archivado desde el original el 2 de mayo de 2017 . Consultado el 4 de mayo de 2018 .
- ^ "La historia del desarrollador del servidor Windows Vista y Windows" Longhorn ": 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 escribir scripts de WMI
- Webcast de Microsoft WMI
- Creador de código WMI