Cómo ver el hardware del PC con PowerShell (Get-CimInstance)

Alguien pregunta "¿cuánta memoria tiene este PC?" y abres Configuración, luego el Administrador de tareas, luego buscas la etiqueta debajo del portátil. En una máquina, bien. En quince, se va la tarde. Windows ya guarda el modelo, el número de serie, la versión de la BIOS, los módulos de memoria y la tarjeta gráfica en WMI, y Get-CimInstance lo lee todo en una línea.
Qué es Get-CimInstance
Es el cmdlet del módulo CimCmdlets que consulta clases CIM/WMI. Según la documentación de Microsoft, devuelve instancias de una clase de un servidor CIM, y sin -ComputerName ni -CimSession consulta el WMI local. Reemplaza al antiguo Get-WmiObject, que no existe en PowerShell 7. Funciona en Windows PowerShell 5.1 y en 7.x, pero solo en Windows.
La mayoría de las clases de abajo no necesitan administrador.
¿Cómo ver las especificaciones del PC en PowerShell?
Ejecuta Get-CimInstance -ClassName Win32_ComputerSystem para fabricante, modelo y RAM total, y Win32_BIOS para el número de serie y la versión de la BIOS.
Cada pieza de hardware es una clase. Las que más uso:
- Win32_ComputerSystem: fabricante, modelo, memoria física total.
- Win32_BIOS: número de serie, versión y fecha de la BIOS.
- Win32_Processor: nombre de la CPU, núcleos, hilos, reloj máximo.
- Win32_PhysicalMemory: un objeto por módulo de RAM.
- Win32_VideoController: tarjeta gráfica y versión del controlador.
- Win32_OperatingSystem: edición, compilación de Windows y último arranque.
Paso 1: identificar la máquina
Get-CimInstance -ClassName Win32_ComputerSystem |
Select-Object Manufacturer, Model, @{n='RAM_GB';e={[math]::Round($_.TotalPhysicalMemory/1GB,1)}}
Get-CimInstance -ClassName Win32_BIOS |
Select-Object SerialNumber, SMBIOSBIOSVersion, ReleaseDateEl SerialNumber de la BIOS es lo que pide el soporte del fabricante para consultar la garantía. En un PC armado a medida, este campo suele traer texto genérico, como "To be filled by O.E.M.", porque la placa base no tiene un número de serie de sistema grabado.
Paso 2: procesador y memoria
Get-CimInstance -ClassName Win32_Processor |
Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed
Get-CimInstance -ClassName Win32_PhysicalMemory |
Select-Object BankLabel, DeviceLocator, Manufacturer, PartNumber, Speed,
@{n='GB';e={$_.Capacity/1GB}}La segunda consulta devuelve una fila por módulo. Es la forma más rápida de saber si el portátil tiene un módulo de 16 GB o dos de 8 GB, y cuántas ranuras están ocupadas antes de comprar una ampliación. El PartNumber ayuda a comprar un módulo compatible. Speed está en MHz.
Paso 3: tarjeta gráfica, con una trampa
Get-CimInstance -ClassName Win32_VideoController |
Select-Object Name, DriverVersion, DriverDate, VideoProcessorNo te fíes del campo AdapterRAM para saber la VRAM. La documentación de la clase Win32_VideoController lo define como uint32, un tipo de 32 bits que no representa valores por encima de 4 GB. En una tarjeta moderna el número sale incorrecto o truncado. Para una VRAM fiable, usa dxdiag o la pestaña Rendimiento del Administrador de tareas.
Paso 4: una sola tabla para pegar en el ticket
$cs = Get-CimInstance Win32_ComputerSystem
$bios = Get-CimInstance Win32_BIOS
$cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
$os = Get-CimInstance Win32_OperatingSystem
[pscustomobject]@{
Computador = $env:COMPUTERNAME
Modelo = "$($cs.Manufacturer) $($cs.Model)"
Serial = $bios.SerialNumber
BIOS = $bios.SMBIOSBIOSVersion
CPU = $cpu.Name
RAM_GB = [math]::Round($cs.TotalPhysicalMemory/1GB,1)
Windows = "$($os.Caption) build $($os.BuildNumber)"
UltimoBoot = $os.LastBootUpTime
} | Format-ListEste informe cabe en una pantalla y sustituye a la hoja de cálculo rellenada a mano. Cambia Format-List por Export-Csv para guardar el resultado.
Paso 5: inventariar varios equipos
Con -ComputerName, el cmdlet crea una sesión temporal mediante WS-Man. Para varias consultas a la misma máquina, Microsoft recomienda abrir una sesión CIM y reutilizarla, que es más rápido:
$s = New-CimSession -ComputerName PC01, PC02, PC03
Get-CimInstance -ClassName Win32_BIOS -CimSession $s |
Select-Object PSComputerName, SerialNumber, SMBIOSBIOSVersion |
Export-Csv C:\Audit\inventario.csv -NoTypeInformation -Encoding UTF8
Remove-CimSession $sEl acceso remoto exige WinRM habilitado en las máquinas de destino y una cuenta con permisos de administrador en ellas. Si la conexión falla, prueba primero el puerto con Test-NetConnection: WinRM escucha en el 5985 (HTTP) y el 5986 (HTTPS).
Por qué importa para la seguridad
El inventario es la base de cualquier hardening. No puedes proteger lo que no sabes que existe: una versión de BIOS desactualizada, una compilación de Windows sin soporte y una máquina olvidada en la red aparecen en esta lista. Combínalo con la auditoría de puertos abiertos y la revisión de servicios para tener el retrato completo del equipo.
Para ejecutar el inventario cada semana sin acordarte, programa el script con schtasks. Y si el informe muestra un disco sospechoso, el siguiente paso es revisar la salud del SSD y el HDD con Get-PhysicalDisk.




Comentarios