Instrumentación de Administración Windows
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 servidores y computadoras personales con 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 Windows 95 a Windows 98.
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). (En Windows 11, wmic /? muestra "WMIC está en desuso", seguido del texto de ayuda).
Propósito de WMI
El propósito de WMI es definir un conjunto propietario de especificaciones independientes del entorno que permiten 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
- Define un modelo
- Implementar el modelo
- Crear el proveedor WMI
- Determinar el tipo de proveedor para implementar
- Determinar el modelo de alojamiento del proveedor
- Crear la plantilla del proveedor con el asistente ATL
- Implementar la lógica del código en el proveedor
- Registrar el proveedor con WMI y el sistema
- Pruebe el proveedor
- Crear código de muestra de consumo.
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:
- Bajo Windows NT 4.0, Microsoft tenía aproximadamente 15 proveedores WMI disponibles una vez que WMI fue instalado
- Cuando Windows 2000 fue liberado, había 29 proveedores WMI como parte de la instalación del sistema operativo
- Con la versión de Windows Server 2003, Microsoft incluyó en la plataforma más de 80 proveedores WMI
- Windows Vista incluye 13 nuevos proveedores WMI, tomando el número cerca de 100 en todos
- Windows Server 2008 incluye más proveedores, incluyendo proveedores para IIS 7, PowerShell y virtualización
- Windows 10 incluye 47 proveedores para el servicio Mobile Device Management (MDM).
- Windows 10 ___
Muchos clientes han interpretado el crecimiento en el número de proveedores como una señal de que WMI se ha convertido en Microsoft en el sistema "ubicuo" capa de gestión de Windows, incluso si Microsoft nunca ha hecho explícito este compromiso.
Debido a una exposición cada vez mayor de los datos de administración a través de WMI en Windows, las personas en el campo de la administración de sistemas de TI comenzaron a desarrollar scripts y procedimientos de automatización basados en WMI. 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 varios 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 así 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:
- Interfaz de automatización:
Debido a que WMI viene con un conjunto de interfaces de automatización listos para usar, todas las funciones de gestión soportadas por un proveedor de WMI y su conjunto de clases obtienen el soporte de scripting para la salida gratuita de la caja. Más allá del diseño de 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 scripting ya que ya está disponible en WMI. - . NET Interfaz de gestión:
Porque el Sistema. Management namespace se basa en la fontanería COM/DCOM existente, el proveedor WMI creado y su conjunto de clases WMI se pone automáticamente a disposición de todos. Aplicaciones NET independientemente del idioma utilizado (por ejemplo C#, VB.NET). Más allá del diseño de clase WMI y el desarrollo del proveedor, como para scripting, los equipos de desarrollo y prueba de Microsoft no son necesarios para crear, validar y probar nuevas asambleas para apoyar un nuevo espacio de nombres en el. NET Framework ya está disponible de WMI de forma gratuita. - Interfaz de programación C/C++ COM/DCOM:
Como la mayoría de los componentes en Windows, los programadores COM/DCOM pueden aprovechar las características del proveedor que desarrollan a nivel de interfaces COM/DCOM. Como en entornos anteriores (scripting and.NET Framework), un consumidor COM/DCOM sólo necesita interactuar con el conjunto estándar de interfaces WMI COM para aprovechar las capacidades de proveedores WMI y su conjunto de clases WMI compatibles. Para poner toda la información de gestión disponible en las API nativas, el desarrollador de proveedores WMI sólo necesita interactuar con un conjunto de interfaces WMI COM predefinidas. Esto hará que la información de gestión esté disponible en el nivel WMI COM automáticamente. Además, el modelo de objeto de interfaz COM de scripting es muy similar al modelo de objeto de interfaz COM/DCOM, lo que facilita que los desarrolladores conozcan la experiencia de scripting. - Remoción de capacidades sobre DCOM y SOAP:
Más que simplemente ofrecer capacidades locales COM, ya que la gestión es todo sobre remoción, 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 de proveedores WMI es que cuando expone todas sus características a través de WMI, Gestión remota de Windows/WS-Management puede a su vez consumir esa información también (objetos almacenados en las instancias WMI no son compatibles en Windows Server 2003 R2. Sin embargo, es un objetivo para Vista). Toda la capa a WS-Management y la asignación del modelo de datos CIM a SOAP viene gratis de la solución WMI/WS-Management. En caso de que se debe utilizar DCOM, implementar DCOM requiere la presencia de un DLL proxy desplegado en cada máquina cliente. Como WMI está disponible en el sistema operativo Windows desde Windows 2000, estos problemas se eliminan. - Asistencia para consultas:
WMI ofrece soporte para consultas WQL fuera de la caja. Esto significa que si un proveedor no está diseñado para apoyar las consultas, WMI lo soporta utilizando una técnica de enumeración fuera del proveedor. - Capacidades de evento:
WMI ofrece la capacidad de notificar a un suscriptor para cualquier evento que le interesa. WMI utiliza el WMI Query Language (WQL) para presentar consultas de eventos WQL y define el tipo de eventos que deben ser devueltos. El mecanismo de evento, con todos los callbacks relacionados, forma parte de las interfaces WMI COM/DCOM y automatización. Cualquier persona que escriba un proveedor WMI puede tener el beneficio de esta funcionalidad sin costo para sus clientes. Dependerá del consumidor decidir cómo quiere consumir la información de gestión expuesta por el proveedor WMI y su conjunto de clases WMI. - Generador de plantilla de código:
Para acelerar el proceso de escritura de un proveedor WMI incluyendo todas las interfaces COM/DCOM y definiciones conexas, el equipo WMI desarrolló el WMI ATL Wizard para generar la plantilla de código implementando un proveedor. El código generado se basa en el modelo de clase WMI diseñado inicialmente por el desarrollador. El desarrollador de proveedores WMI será capaz de conectar las interfaces COM/DCOM predefinidas para el proveedor WMI con su conjunto de API nativas que recuperan la información de gestión para exponer. El ejercicio consiste en llenar los “gaps” en el código del proveedor para crear la lógica interfacing deseada. - Predecibilidad:
La previsibilidad es una preocupación importante para los profesionales de TI porque define la capacidad de alguien que tiene una experiencia con un conjunto de interfaces que administran un componente de Windows para aplicar este conocimiento de inmediato, intuitivamente, a cualquier otro componente manejable de Windows sin haber relegado todo desde el suelo. Predecibilidad para un cliente es una ganancia real ya que aumenta el retorno de la inversión (ROI). Una persona que se enfrenta a tal situación simplemente espera que las cosas funcionen de la misma manera basándose en su experiencia anterior. El aumento constante de las interfaces de programación/scriptibles COM tiene un enorme impacto en la previsibilidad, ya que esto hace difícil para los clientes automatizar, gestionar Windows y aprovechar sus conocimientos existentes. WMI with CIM address this problem by always exposing the same programming object model (COM/DCOM, Automation,.NET) regardless the manageable entity is. - Proteger las inversiones de clientes existentes:
La protección de clientes y socios de inversión motiva a los clientes a invertir en tecnologías. Como Microsoft invirtió mucho estos últimos años en escribir proveedores WMI, clientes y socios invirtieron en herramientas aprovechando 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 dedicadas a un componente o tecnología. Aprovechando las capacidades de WMI hoy, los clientes y socios pueden aprovechar la inversión de trabajo realizada en el pasado al minimizar sus costos en desarrollos, curvas de aprendizaje y nuevos descubrimientos. Esto también tendrá un gran impacto en la estabilidad y fiabilidad de su infraestructura, ya que siguen aprovechando una aplicación existente con una tecnología mejorada. - Proporcionar un modelo de administración lógico y unificado:
Como se describe brevemente en la introducción, este modelo se basa en una norma de la industria denominada CIM definida por el DMTF (https://www.dmtf.org/). El esquema basado en la clase CIM se define por un consorcio de constructores y desarrolladores de software que satisface los requisitos de la industria. Esto implica que no sólo Microsoft aprovecha las capacidades de WMI, sino también cualquier otro constructor de terceros o desarrolladores escriben su propio código para encajar en el modelo. Por ejemplo, Intel está haciendo esto para algunos de sus adaptadores de controlador de red y software. HP está aprovechando a 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 el estado de información de software antivirus y 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 Objetos Gestionados (MOF) analiza un archivo que contiene declaraciones de Formato de Objetos Gestionados y añade las clases y 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 qué archivos MOF son para CIM). MOFComp.exe está incluido en cada instalación WMI. Cada definición existente en el repositorio CIM se define inicialmente en un archivo MOF. Los archivos MOF se encuentran en %SystemRoot%System32WBEM. Durante la instalación WMI, están cargados en el repositorio CIM.
- Las herramientas administrativas WMI: Las herramientas administrativas WMI están hechas 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 WMI es WMI CIM Studio ya que ayuda en la creación de clase WMI inicial en el repositorio CIM. Utiliza una interfaz web para mostrar información y depende de una colección de componentes ActiveX instalados en el sistema cuando se ejecuta por primera vez. WMI CIM Studio proporciona la capacidad de:
- Conectar a un sistema elegido y navegar por el repositorio CIM en cualquier espacio de nombres disponible.
- Busque clases por su nombre, por sus descripciones o por nombres de propiedad.
- Revise las propiedades, métodos y asociaciones relacionadas con una clase determinada.
- Vea los casos disponibles para una determinada clase del sistema examinado.
- Realizar consultas en el idioma WQL.
- Generar un archivo MOF basado en clases seleccionadas.
- Compilar 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. Bajo la familia Windows NT de sistemas operativos, WMI funciona como un servicio. En las computadoras que ejecutan Windows 98, Windows 95, o Windows Me, WMI funciona como una aplicación. Bajo la familia de sistemas operativos de Windows NT, también es posible ejecutar este ejecutable como una aplicación, en cuyo caso, el ejecutable se ejecuta en el contexto actual del usuario. Para ello, el servicio WMI debe ser detenido primero. El ejecutable soporta algunos interruptores que pueden ser útiles al iniciar WMI como servicio o como aplicación. Los desarrolladores de proveedores WMI que pueden querer depurar a sus proveedores esencialmente necesitan ejecutar el servicio WMI como una aplicación.
- WBEMTest.exe: WBEMTest.exe es una herramienta WMI tester, que se entrega con WMI. Esta herramienta permite a un administrador o un desarrollador realizar la mayoría de las tareas desde una interfaz gráfica que WMI proporciona a nivel API. Aunque está disponible en todos los sistemas operativos basados en Windows NT, esta herramienta no es respaldada oficialmente por Microsoft. WBEMTest proporciona la capacidad de:
- Enumerar, abrir, crear y eliminar clases.
- Enumerar, abrir, crear y eliminar casos de clases.
- Seleccione un espacio de nombres.
- Realizar consultas de datos y eventos.
- Ejecute métodos asociados a clases o casos.
- Ejecute cada operación WMI de forma asincrónica, sincronizada o semi-asincrónica.
- La herramienta WMI línea de comandos (WMIC): WMIC es una herramienta de línea de comandos diseñada para facilitar la recuperación de información WMI sobre un sistema utilizando algunas palabras clave simples (aliases). WMIC.exe está disponible en Windows XP Professional, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008,... Windows 11. Tipología
wmic /?en la línea de comandos muestra una lista completa de los interruptores y palabras clave. (En Windows 11,wmic /?muestra "WMIC está deprecated.", seguido por el texto de ayuda.)- Hay un puerto Linux de WMI línea de comandos, escrito en Python, basado en Samba4 llamado 'wmi-client '
- WBEMDump.exe: WBEMDump es una herramienta entregada con el SDK de la Plataforma. Esta herramienta de línea de comandos viene con su propio proyecto Visual C++. La herramienta puede mostrar las clases de repositorio CIM, instancias, o ambas. Es posible recuperar la misma información que la recuperada con WMIC. WBEMDump.exe requiere más conocimiento específico sobre WMI, ya que no abstracta 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 estándar WMI entregada con la instalación del sistema, esta herramienta puede ser muy útil para explorar el repositorio CIM y características WMI.
- WMIDiag.vbs: La herramienta de diagnóstico WMI es un VBScript descargable de Microsoft aquí y es una herramienta para probar y validar WMI en Windows 2000 y mayor. La descarga incluye documentación bastante completa y la herramienta admite numerosos interruptores. Cuando se ejecute, generará hasta cuatro archivos de texto que: enumerar los pasos tomados (el archivo LOG), una visión general de los resultados (archivo REPORT), un archivo de estadísticas (en formato de valores separados por coma), y opcionalmente un listado de archivos de los proveedores registrados en la máquina (PROVIDERS, también en formato de valores separados por coma). El archivo del informe que se genera incluye una lista de las cuestiones identificadas y posibles formas de solucionarlas.
- WMI Explorador: El WMI Explorer Tool es un programa de código abierto y libre descargable aquí y es una herramienta para enumerar y consultar a los 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 Win32_LogicalDisk en el caso de una unidad de disco, o Win32_Process, como un programa en ejecución como Notepad.exe.
Este ejemplo muestra cómo "MSNdis_80211_ServiceSetIdentifier" La clase WMI se utiliza para encontrar el SSID de la red Wi-Fi a la que está conectado actualmente el sistema en el lenguaje C#:
ManagementClass mc = nuevo ManagementClass()"root\WMI", "MSNdis_80211_ServiceSetIdentifier", nulo);ManagementObjectCollection moc = mc.GetInstances();en adelante ()Gestión Objeto mo dentro moc){} cuerda wlanCard = ()cuerda)mo["InstanceName"]; bool activo; si ()!bool.TryParse()cuerda)mo["Activo"] Fuera. activo) {} activo = falso; } byte[] ssid = ()byte[])mo["Ndis80211SsId"];}El "MSNdis_80211_ServiceSetIdentifier" La 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.