En entornos de administración de sistemas, especialmente en Windows, es común necesitar un inventario de las aplicaciones instaladas en un equipo. Esto puede ser útil para tareas de auditoría, mantenimiento, control de licencias o migraciones. En este artículo explicaremos varios comandos de PowerShell y herramientas WMI que permiten listar software instalado, tanto de sistemas de 32 como de 64 bits.
1. gwmi Win32_Product
Este comando utiliza WMI (Windows Management Instrumentation) para obtener una lista de productos instalados:
gwmi Win32_Product
Explicación:
gwmi
es un alias deGet-WmiObject
.Win32_Product
es una clase WMI que representa los productos instalados a través del instalador de Windows (MSI).
Advertencia: Ejecutar este comando puede desencadenar una reconfiguración de cada paquete MSI instalado, lo que puede hacer que algunos programas se reparen o reinstalen parcialmente. Por ello, no se recomienda usarlo en producción para auditorías pasivas.
2. Lectura del Registro: gp
y filtros personalizados
gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | ? {![string]::IsNullOrWhiteSpace($_.DisplayName) } | select DisplayName
Explicación:
gp
es un alias deGet-ItemProperty
.- Se accede a dos rutas del registro: una para software de 64 bits y otra para 32 bits (Wow6432Node).
- Se filtra para eliminar entradas vacías usando
Where-Object
(?
es su alias). - Se selecciona solo el campo
DisplayName
.
Ventaja: Método no intrusivo, ideal para inventario.
3. Get-WmiObject -Class Win32_Product | Select-Object -Property Name
Get-WmiObject -Class Win32_Product | Select-Object -Property Name
Explicación:
- Similar al primer comando, pero filtrando y mostrando solo el nombre del producto.
- Mismo riesgo de reconfiguración al invocar
Win32_Product
.
4. wmic product get name,version
wmic product get name,version
Explicación:
- Ejecutado en la consola CMD (no PowerShell).
- Muestra productos MSI instalados con su nombre y versión.
- También puede provocar reparaciones, como
Win32_Product
.
Nota: WMIC ha sido desaprobado en versiones recientes de Windows. Puede no estar disponible.
5. Listado detallado desde el Registro (software de 32 bits)
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Format-Table –AutoSize
Explicación:
- Se accede a la rama del registro para software de 32 bits.
- Se extrae el nombre, versión, editor y fecha de instalación.
Format-Table -AutoSize
mejora la visualización en consola.
6. Listado detallado desde el Registro (software de 64 bits)
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Format-Table –AutoSize
Explicación:
- Igual que el anterior, pero para software de 64 bits.
Conclusión
Cada uno de estos métodos tiene ventajas y limitaciones. Para tareas de auditoría o recolección de información sin alterar el sistema, lo más recomendable es acceder al Registro de Windows (métodos 2, 5 y 6). Evita Win32_Product
y wmic
si no estás seguro del impacto que puedan causar.
Recomendación final:
Si necesitas integrar esta información en scripts automatizados o herramientas de monitoreo, usa siempre el acceso al Registro para evitar impactos indeseados sobre el sistema.