PowerShell es una herramienta poderosa para la administración de sistemas Windows, y una de sus muchas capacidades es la de listar aplicaciones instaladas. Dependiendo del tipo de aplicación (clásica, moderna, de usuario o del sistema), existen varios enfoques para obtener esta información. En este artículo se describen los métodos más comunes y efectivos.
1. Listar Aplicaciones de Escritorio (Win32)
Las aplicaciones tradicionales instaladas en Windows, como las que se ven en “Programas y características”, están registradas en el Registro de Windows. PowerShell puede acceder a estas entradas fácilmente.
Aplicaciones de 64 bits (sistema):
Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Where-Object { $_.DisplayName } |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Sort-Object DisplayName
Aplicaciones de 32 bits (en sistemas de 64 bits):
Get-ItemProperty -Path "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Where-Object { $_.DisplayName } |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Sort-Object DisplayName
Aplicaciones instaladas para el usuario actual:
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Where-Object { $_.DisplayName } |
Select-Object DisplayName, DisplayVersion |
Sort-Object DisplayName
Filtrar por una aplicación concreta (por ejemplo, “7-Zip”)
Puedes buscar una aplicación específica usando un filtro por nombre:
Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Where-Object { $_.DisplayName -like "*7-Zip*" } |
Select-Object DisplayName, DisplayVersion, Publisher, InstallLocation
Repite este mismo comando adaptando la ruta si buscas en el registro de 32 bits (
WOW6432Node
) o enHKCU
(usuario actual).2. Listar Aplicaciones Modernas (Microsoft Store / UWP)
Las aplicaciones modernas instaladas desde la Microsoft Store se gestionan de forma diferente y no aparecen en el registro. Para listarlas:
Get-AppxPackage |
Select-Object Name, PackageFullName, InstallLocation |
Sort-Object Name
Para filtrar por nombre (por ejemplo, “7-Zip”):
Get-AppxPackage | Where-Object { $_.Name -like "*7zip*" }
3. Usar winget
para Listar Aplicaciones (si está disponible)
Windows 10 y 11 incluyen la utilidad winget
, que permite gestionar software desde la línea de comandos. Para listar todas las aplicaciones:
winget list
Este comando devuelve una lista clara y organizada de todas las aplicaciones instaladas por el usuario o el sistema, con su versión y origen.
4. Comprobar si un Programa Está Instalado (Ejemplo: 7-Zip)
Verificar si el ejecutable está en el PATH del sistema:
$7zip = Get-Command 7z.exe -ErrorAction SilentlyContinue
if ($7zip) {
Write-Output "7-Zip está instalado en: $($7zip.Source)"
} else {
Write-Output "7-Zip no está en el PATH del sistema."
}
Buscar manualmente en rutas comunes:
$paths = @(
"C:\Program Files\7-Zip\7z.exe",
"C:\Program Files (x86)\7-Zip\7z.exe"
)
foreach ($path in $paths) {
if (Test-Path $path) {
Write-Output "7-Zip encontrado en: $path"
}
}
Exportar la Lista a un Archivo
Puedes exportar cualquier lista generada con PowerShell a un archivo CSV para su análisis posterior:
Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Where-Object { $_.DisplayName } |
Select-Object DisplayName, DisplayVersion, Publisher |
Export-Csv -Path "C:\apps_instaladas.csv" -NoTypeInformation -Encoding UTF8
Conclusión
PowerShell ofrece múltiples maneras de consultar las aplicaciones instaladas en un sistema Windows. Ya sea que necesites obtener un inventario para administración, auditoría o scripting automatizado, estos comandos te permitirán acceder a la información de forma detallada y flexible.