Geek School usa PowerShell para obtener información de la computadora
WMI y su nuevo CIM hermano pueden utilizarse para administrar las máquinas Windows en su entorno. ¿Pero sabes la diferencia entre ellos? Únete a nosotros mientras echamos un vistazo..
Asegúrese de leer los artículos anteriores de la serie:
- Aprenda cómo automatizar Windows con PowerShell
- Aprendiendo a usar cmdlets en PowerShell
- Aprender a usar objetos en PowerShell
- Aprendizaje de formato, filtrado y comparación en PowerShell
- Aprende a usar el control remoto en PowerShell
Y estad atentos para el resto de la serie toda la semana..
Introducción
WMI significa Instrumental de administración de Windows. La palabra "Instrumentación" se refiere al hecho de que WMI le permite obtener información sobre el estado interno de su computadora, al igual que los instrumentos del tablero de instrumentos de su automóvil pueden recuperar y mostrar información sobre el estado de los componentes internos de su automóvil..
WMI consiste en un repositorio que contiene clases que representan componentes que podrían administrarse dentro de su máquina. Con eso queremos decir que WMI tiene una clase Win32_Battery no significa que su máquina contenga una batería. Estas clases se pueden consultar para obtener información local o incluso a través de una red utilizando un lenguaje de consulta muy similar al SQL llamado WQL. Sin embargo, se sabe que WMI es muy poco confiable, principalmente debido al hecho de que se basa en RPC (Llamadas a procedimientos remotos), que hacen algunas locuras con los puertos que eligen para comunicarse..
A partir de Windows 8 y Server 2012, WMI se está eliminando gradualmente a favor del Modelo de información común o CIM, para abreviar. La única diferencia entre WMI y CIM son los protocolos de transporte que utilizan. Mientras que WMI realiza consultas mediante llamadas a procedimientos remotos, CIM utiliza HTTP, lo que parece hacer una gran diferencia. En el backend todavía están hablando con el mismo repositorio de información.
Usando WMI
La forma más rápida y sencilla de explorar la información disponible a través de WMI es obtener una copia de cualquier navegador de objetos WMI gratuito. Nos gusta este. Una vez descargado, enciéndalo y tendrá una interfaz gráfica para navegar por las clases de WMI.
Si desea averiguar algo acerca de la configuración del disco de una computadora, presione la combinación de teclas Ctrl + F para que aparezca un cuadro de búsqueda, luego escriba "logicaldisk" y presione enter.
Inmediatamente esto te llevará a la clase Win32_LogicalDisk.
En la mitad inferior de la aplicación, puedes ver que tenemos dos instancias de la clase.
Una vez que tenemos la clase que estamos buscando, consultarla desde PowerShell es sencillo.
Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"
No he visto esa sintaxis por un tiempo con personas en estos días que prefieren usar la nueva sintaxis parametrizada.
Get-WmiObject -Class Win32_LogicalDisk
Si desea obtener la información de otra computadora en su red, simplemente puede usar el parámetro NombreDeEquipo.
Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper -Credential viper \ administrator
Usando CIM
Teniendo en cuenta que CIM solo está disponible en Windows 8 y Server 2012, avanzar es definitivamente el camino a seguir..
Get-CimInstance -ClassName Win32_LogicalDisk
También hay una pestaña completa para el parámetro -ClassName cuando se usa Get-CimInstance, lo que muestra que, en el futuro, es donde se centrarán los esfuerzos de Microsoft..
De hecho, WMI fue desarrollado por un equipo completamente separado dentro de Microsoft, pero posteriormente fue asumido por las personas a cargo de PowerShell. Ellos fueron los que notaron que va a ser muy difícil limpiar el desastre que WMI dejó atrás. En un intento por remediar la situación, intentan hacer que WMI y CIM estén más disponibles al escribir cmdlets de contenedor que usan WMI y CIM debajo del capó. La única forma de comprobar si un cmdlet es un contenedor es mirar la documentación. Por ejemplo, el cmdlet Get-Hotfix es un contenedor para la clase Win32_QuickFixEngineering, como se ve en la documentación.
Eso significa que puede obtener las revisiones en máquinas remotas utilizando el cmdlet Get-HotFix en lugar de una consulta WMI.
Get-HotFix -ComputerName localhost
Así que ahí lo tienen. Solo recuerde que si hay un cmdlet dedicado, siempre querrá usarlo, seguido de CIM en caso de que no exista un cmdlet. Finalmente, si todo lo demás falla, o si tiene máquinas más antiguas en su entorno, querrá usar WMI. Eso es todo lo que tengo para este tiempo. Nos vemos mañana para más diversión PowerShell..