Subido por anhell26

INFORME DEL PC - WMI y CIM - POWERSHELL

Anuncio
INFORMACIÓN DEL HARDWARE y SOFTWARE MEDIANTE POWERSHELL
CIM (Common Information Model). Es un estándar abierto que establece (define) como
intercambiar información entre sistemas, redes, aplicaciones y servicios.
WMI: Instrumentación de Administración Windows (Windows Management
Instrumentation). Es la implementación de Microsoft de CIM. WMI utiliza lenguajes de scripting
(VBScript, Windows PowerShell...) para gestionar local y remotamente equipos y servidores con
Microsoft Windows. También está disponible un interface de línea de comandos llamado
Windows Management Instrumentation Command-line (WMIC).
WMI también está basado en WBEM (Web-Based Enterprise Management), un estándar que
define como representar la información de un sistema operativo para facilitar su administración.
En WMI toda la información del sistema se representa mediante objetos.
• Define la forma en la que los recursos de Windows pueden ser accedidos, gestionados y
monitorizados.
• Todas las herramientas gráficas administrativas que usamos se basan en WMI.
• Antes de WMI el acceso a los recursos del sistema se hacía a través de APIS Win32
WMI está diseñado por programadores que usan C/C++/C#, Microsoft Visual Basic, o lenguaje de
scripting de Windows que maneja objetos Microsoft ActiveX.
Un ejemplo de wmic sería:
WMIC ComputerSystem where Name=“COMPUTER-NAME” call Rename Name=NewName
Podríamos decir que WMI funciona como una base de datos que proporciona información muy
variada del sistema.
WMI está formado por varias clases que representan los distintos elementos del sistema.
En lugar de utilizar WMIC usaremos PowerShell para comunicarnos con las clases de WMI/CIM, y
extraer la información que nos interesa.
Existen dos tipos de cmdlets para trabajar con las diferentes clases:
➢ WMI (conocido como WMI v1, más antiguo
➢ CIM (conocido como WMI v2)
Microsoft ha dejado de desarrollar WMI, y no lo incluye en la versión multiplataforma PowerShell
Core. Los cmdlets CIM están sustituyendo a los cmdlets WMI porque utilizan el protocolo
(WinRM) para comunicarse con máquinas remotas y porque devuelven más y mejor información
que WMI.
CMDLETS WMI v1
Get-Command "*wmi*" -> Lista los cmdlets para trabajar con WMI:
Uno de los más importantes es Get-WmiObject.
Para mostrar las diferentes Clases disponibles:
Get-WmiObject -list | Out-Host -Paging -> Paginamos la salida como con el comando more
(Get-WmiObject -List).count -> Contabilizamos cuantas clases diferentes hay
Get-WmiObject -List | Where-Object {$_.Name -like "*bios*"} -> Buscamos las clases
relacionadas con un elemento / componente que nos interese.
Where-Object permite filtrar información de forma similar a la cláusula WHERE en SQL
Una vez encontrada la clase que nos interese, podemos ver todas las propiedades disponibles
mediante el cmdlet get-member.
Get-WmiObject -Class win32_Bios | get-Member -> Listado propiedades.
Get-WmiObject -Class win32_Bios | fl * -> Información de la BIOS
Get-WmiObject -Class win32_processor | fl * -> Información de la CPU
Get-WmiObject -Class Win32_DiskDrive | fl * -> Información de los discos
Get-WmiObject -Class Win32_DiskDrive | where-object {$_.Model -eq "WD-GREEN56"}
Get-WmiObject -Class Win32_BaseBoard | fl * -> Información de la placa base
Get-WmiObject -ClassName Win32_ NetworkAdapter | where-object {$_.DeviceID -eq 1}
Get-WmiObject -ClassName Win32_NetworkAdapter -Filter "DeviceID=1"| fl -> Red
Get-WmiObject -Class Win32_PhysicalMemory -> Información de la memoria RAM
Get-WmiObject -Class Win32_OperatingSystem | fl * -> Información del SSOO
Get-WmiObject -Class Win32_Win32_Share | fl * -> Información de los recursos compartidos
Get-WmiObject -Class win32_computersystem | fl * -> Información del sistema (fabricante,
dominio, propietario del equipo...)
CMDLETS WMI v2 (CIM)
Get-Command "*cim*" -> Lista los cmdlets para trabajar con CIM:
Uno de los más importantes es Get-CimInstance.
Para mostrar las diferentes Clases disponibles:
Get-CimClass | Out-Host -Paging -> Paginamos la salida como con el comando more
(Get-CimClass).count -> Contabilizamos cuantas clases diferentes hay
Get-CimClass "*bios*" -> Buscamos las clases relacionadas con un elemento / componente que
nos interese.
Get-CimInstance -ClassName Win32_BIOS | fl * -> Información de la BIOS
Get-CimInstance -ClassName Win32_PROCESSOR -Computername . | fl * -> Información CPU
Get-CimInstance -ClassName Win32_DiskDrive -Computername . | fl * -> Información DISCOS
Get-CimInstance -ClassName Win32_LogicalDisk | fl * -> Información Unidades Lógicas
Get-CimInstance -ClassName Win32_BaseBoard | fl * -> Información de la placa base
Get-CimInstance -ClassName Win32_Computersystem | fl * -> Información del sistema
Get-CimInstance -Class Win32_NetworkAdapter -Filter "DeviceID=1"| fl -> Red
Get-CimInstance -Class Win32_networkadapter | format-table -property deviceid, name,
Manufacturer, adaptertype, servicename
Get-CimInstance -Class Win32_PhysicalMemory -> Información de la memoria RAM
Get-CimInstance -Class Win32_OperatingSystem | fl * -> Información del SSOO
Get-CimInstance -Class Win32_Win32_Share | fl * -> Información de los recursos compartidos
Get-CimInstance -Class win32_computersystem | fl * -> Información del sistema (fabricante,
dominio, propietario del equipo...)
Get-CimInstance -Class win32_VideoController | fl * -> Información de la tarjeta gráfica
Get-CimInstance -Class win32_DesktopMonitor | fl * -> Información del monitor
Get-CimInstance -Class win32_Battery | fl * -> Información de la batería
Get-CimInstance -Class win32_PortableBattery | fl *
Get-CimInstance -Class win32_Product | fl * -> Información del software
Descargar