Puntos clave
- Recopila el software instalado con PowerShell: ejecuta un comando de PowerShell sobre las rutas de desinstalación del registro de 64 y 32 bits para obtener la lista de aplicaciones instaladas y, después, exporta los resultados a un archivo CSV para generar informes.
- Crea una línea base y compárala: define en PowerShell un array con los nombres de las aplicaciones obligatorias y compáralo con tu lista de software instalado para señalar las aplicaciones que faltan. Luego, exporta ese informe de software ausente a CSV.
- Usa CMD/WMIC cuando PowerShell no sea una opción: ejecuta un comando WMIC desde un símbolo del sistema con privilegios elevados para exportar una lista en texto del software instalado y, si lo necesitas, analiza ese archivo con PowerShell para buscar nombres de aplicaciones concretas.
- Guarda los resultados de cumplimiento en el Registro: crea una clave de registro en HKLM para almacenar los resultados de la auditoría, define propiedades con la fecha de la última auditoría y los elementos ausentes y, después, consulta esa clave para confirmar que los valores se guardaron correctamente.
- Consolida los resultados en un informe de cumplimiento: haz que cada dispositivo guarde su CSV en una carpeta compartida o en el RMM y ejecuta un comando de PowerShell para importar y combinar todos los CSV en un informe maestro. Comprueba que incluya el nombre del dispositivo, el software ausente, el estado de cumplimiento y la marca de tiempo y, si te resulta útil, agrupa los resultados por cliente o ubicación.
Asegurarte de que el software obligatorio está presente y de que las aplicaciones no autorizadas están bloqueadas es fundamental para el cumplimiento, la seguridad y la estandarización de todos los endpoints. Hacerlo a mano es lento, poco fiable y consume demasiado tiempo cuando hay muchos endpoints. Con scripts, en cambio, los MSP y los administradores de TI pueden automatizar el proceso y detectar los problemas antes de que afecten a los usuarios.
Los métodos de esta guía te servirán para auditar las aplicaciones instaladas, generar informes de cumplimiento y detectar tanto el software no autorizado como el software ausente. Veremos PowerShell, el símbolo del sistema y el etiquetado mediante el Registro. Además, abordaremos la integración opcional con GPO, RMM y NinjaOne para automatizar e informar a gran escala.
¿Necesitas más información? Mira «Cómo detectar software ausente en el inventario mediante script y generar informes de cumplimiento» para ver una guía visual.
Cómo detectar software ausente mediante script y generar informes de cumplimiento
Requisitos previos:
- Necesitarás Windows 10, 11 o Server 2016+ para que los scripts funcionen.
- PowerShell 5.1 o superior para ejecutar los comandos de inventario e informes.
- Se requieren derechos de administrador en los endpoints para consultar el software instalado.
- Necesitas una lista de software obligatorio para cada sede, rol o cliente, de modo que el script sepa qué debe comprobar.
Opcional:
- Acceso a directivas de grupo para aplicar claves de registro o rutas de archivos.
- Un RMM o una plataforma de gestión de endpoints, como NinjaOne, para facilitar el despliegue remoto de scripts y la generación de informes.
Método 1: recopilar el inventario de software instalado con PowerShell
Puedes usar PowerShell para obtener la lista de aplicaciones instaladas desde las ubicaciones del registro de 64 y 32 bits. Después, puedes exportarla a CSV para generar informes.
Casos de uso:
- Sirve para crear una lista clara del software instalado, comprobar el cumplimiento y determinar si los dispositivos cumplen los estándares.
- Aporta los datos necesarios para comparar lo que debería estar instalado con lo que realmente está instalado.
Requisitos previos:
- Los dispositivos de destino deben ejecutar PowerShell 5.1 o superior.
- Se requieren derechos de administrador para acceder a las ubicaciones del registro donde Windows guarda la información de los programas instalados.
Para consultar las instalaciones de 64 y 32 bits, usa este comando en PowerShell:
| $installedSoftware = Get-ItemProperty ` HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName } | Select-Object DisplayName, DisplayVersion, Publisher $installedSoftware | Format-Table -AutoSize |
Para exportar a CSV:
$installedSoftware | Export-Csv "C:\Reports\InstalledSoftware.csv" -NoTypeInformation |
Método 2: definir una línea base de software y comparar con ella
Una vez que tengas la lista de aplicaciones instaladas, el siguiente paso es compararla con una línea base predefinida. Una línea base es la lista de aplicaciones que deben estar presentes en todos los dispositivos por motivos de cumplimiento y operativos. Puedes usar PowerShell para señalar las aplicaciones ausentes y exportar los resultados.
Casos de uso:
- Te permite comprobar que todos los endpoints tienen las aplicaciones obligatorias.
- Te ayuda a identificar aplicaciones ausentes o no autorizadas antes de que afecten a los usuarios.
Requisitos previos:
- Debes tener una lista predefinida y definitiva de las aplicaciones obligatorias por sede, rol o cliente.
- Para ejecutar scripts en el dispositivo de destino, necesitas PowerShell 5.1 o superior.
Aquí tienes un ejemplo de lista base y el comando que puedes ejecutar en PowerShell. Define la lista de software que debe estar presente. Puedes añadir aplicaciones separándolas con una coma y comillas rectas:
$requiredApps = @("Microsoft Defender Antivirus", "7-Zip", "Microsoft Edge", "FortiClient VPN") |
Por otro lado, para detectar las aplicaciones ausentes frente a la lista base, usa este código:
| $installed = $installedSoftware.DisplayName $missing = $requiredApps | Where-Object { $installed -notcontains $_ } $missingReport = [PSCustomObject]@{ ComputerName = $env:COMPUTERNAM MissingSoftware = $missing -join «; » Timestamp = (Get-Date).ToString(«u») } |
Para exportar a CSV, ejecuta este comando:
$missingReport | Export-Csv "C:\Reports\MissingSoftware.csv" -NoTypeInformation |
Método 3: usar CMD y WMIC para un inventario ligero
Si PowerShell está restringido o no está disponible, puedes recurrir al símbolo del sistema y a Windows Management Instrumentation Command-line (WMIC). Es una forma rápida de reunir información del software instalado. Aunque ofrece menos detalle que PowerShell, funciona en entornos antiguos.
Casos de uso:
- Úsalo para recopilar el inventario de software en entornos antiguos o restringidos.
- Te sirve para generar listas rápidas en texto del software instalado.
Requisitos previos:
- Necesitarás un endpoint Windows con WMIC disponible (Windows 10 o anterior, o una versión de servidor anterior a 2022).
- Necesitarás permisos para ejecutar comandos desde un símbolo del sistema con privilegios elevados.
Puedes usar este comando en el símbolo del sistema para exportar la lista de software instalado a un archivo de texto:
wmic product get name, version > C:\Reports\SoftwareInventory.txt
Opcional: puedes analizar los resultados con PowerShell:
Get-Content "C:\Reports\SoftwareInventory.txt" | Select-String "AppName"
Método 4: guardar el estado de cumplimiento en el Registro
Este método escribe los resultados de la auditoría en el Registro de Windows, de modo que cada endpoint conserve un registro local de su estado de cumplimiento, incluidas la hora de la última auditoría y el software que falte.
Casos de uso:
- Facilita la consulta de los resultados de cumplimiento en el propio dispositivo, así los técnicos y los scripts pueden comprobarlos rápidamente.
- Permite que las herramientas de RMM lean los valores del registro y los usen en los informes de cumplimiento.
Requisitos previos:
- Necesitarás derechos de administrador para crear y editar claves del Registro en HKLM.
- Requiere el array $missing creado durante la comparación con la línea base del método 2.
Así se crea un registro local que refleje los resultados de cumplimiento:
New-Item -Path "HKLM:\SOFTWARE\Org\SoftwareAudit" -ForceSet-ItemProperty -Path "HKLM:\SOFTWARE\Org\SoftwareAudit" -Name "LastAudit" -Value (Get-Date).ToString(«u»)Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\SoftwareAudit" -Name "MissingItems" -Value ($missing -join «, «) |
Después puedes validarlo en CMD para confirmar que la clave y los valores se crearon realmente. Usa este código para hacerlo:
reg query HKLM\SOFTWARE\Org\SoftwareAudit
Método 5: generar informes de cumplimiento de varios dispositivos
Cuando cada dispositivo haya generado su CSV de auditoría, puedes combinar los resultados en un único informe maestro. Así obtendrás una visión completa del cumplimiento en todos los endpoints y te resultará más fácil seguir las carencias por cliente, ubicación o rol.
Caso de uso:
- Te ayudará a crear un único informe que reúna los datos de cumplimiento de todos los dispositivos.
Requisitos previos:
- Necesitarás acceso a una unidad compartida o a un RMM que recopile los informes CSV de cada dispositivo.
- Harán falta PowerShell 5.1 o superior para consolidar los resultados exportados.
Estos son los pasos para generar informes de cumplimiento de varios dispositivos:
- Recopila los informes de los dispositivos asegurándote de que cada endpoint guarda su CSV en una carpeta compartida o lo sube a través de tu RMM.
- Ejecuta este comando de PowerShell para consolidar los resultados reuniendo y combinando todos los CSV:
Get-ChildItem "\\server\auditshare\*.csv" | Import-Csv | Export-Csv "C:\Reports\MasterComplianceReport.csv" -NoTypeInformation
- A continuación, revisa las columnas clave. Comprueba que el informe maestro tenga los campos esenciales:
- Nombre del dispositivo
- Software ausente
- Estado de cumplimiento
- Marca de tiempo
- Con Group-Object o los filtros de PowerShell puedes organizar los resultados por cliente, ubicación o rol del endpoint. Por ejemplo, puedes agrupar todos los dispositivos de cada cliente con este comando:
Import-Csv "C:\Reports\MasterComplianceReport.csv" | Group-Object Client | ForEach-Object {Write-Output «Client: $($_.Name)» $_.Group | Select-Object DeviceName, MissingSoftware, ComplianceStatus «» } |
⚠️ Aspectos a tener en cuenta
| Riesgos | Posibles consecuencias | Solución |
| Faltan archivos CSV de algunos dispositivos | El informe maestro quedará incompleto y puede minimizar el incumplimiento real. | Comprueba que cada endpoint exportó correctamente su CSV. Vuelve a ejecutar el script de auditoría si es necesario. |
| Los scripts de auditoría no funcionan | Se omiten dispositivos y el informe de cumplimiento muestra menos software ausente del que realmente hay. | Ejecuta los scripts con una cuenta que tenga permisos elevados. |
| Nombres de columna distintos entre los CSV | El proceso de importación puede fallar o dar resultados inexactos. | Estandariza la salida de los scripts para que todos los dispositivos exporten los mismos nombres de columna. |
Otros aspectos al detectar e informar sobre software ausente
Falsos negativos
Los nombres de software en el campo DisplayName pueden variar. Por ejemplo, no es lo mismo «Google Chrome» que «Chrome». Para evitarlo, puedes usar expresiones regulares o coincidencias con comodines y así prevenir resultados inexactos.
Seguimiento de licencias
Las comprobaciones de cumplimiento deben abarcar algo más que las instalaciones ausentes. También conviene controlar las versiones que no coinciden y las licencias de prueba caducadas. Así los endpoints se mantendrán conformes y actualizados.
Exclusiones
Valora mantener listas separadas para el software obligatorio y el software prohibido. Así podrás señalar tanto las instalaciones ausentes como las aplicaciones no autorizadas.
Flexibilidad y ajustes de la línea base
Ajusta los requisitos de la línea base según el rol de cada endpoint. Por ejemplo, los kioscos usados para pantallas informativas pueden necesitar solo unas pocas aplicaciones, mientras que los ingenieros necesitan una gran variedad de programas para trabajar con eficacia.
Guía de inicio rápido
NinjaOne cuenta con funciones sólidas para detectar y gestionar el inventario de software y generar informes de cumplimiento. En concreto:
1. Detección del inventario de software:
NinjaOne ofrece varios scripts y herramientas para controlar el inventario de software
- Incluye una función específica, Dashboard: Software Inventory
- La plataforma permite controlar el software instalado en los dispositivos
2. Informes de cumplimiento:
NinjaOne proporciona funciones de informes completas, entre ellas:
- Herramientas de gestión de vulnerabilidades
- Posibilidad de importar datos de vulnerabilidades desde archivos CSV
- Informes de runbook personalizables y exportables
- Condiciones de política para controlar la presencia de software
3. Capacidades de scripting:
La plataforma dispone de una amplia biblioteca de automatización con scripts como:
- List Browser Extensions
- Detect Installed Antivirus
- Opciones de scripts personalizados para el seguimiento de software
4. Otras funciones de informes:
Informes programados
- Posibilidad de exportar informes a PDF
- Campos personalizados para registrar información de software y dispositivos
Resolución de problemas en la auditoría de software y la generación de informes
No aparece el software de 32 bits en PowerShell de 64 bits
Si las aplicaciones de 32 bits no aparecen, comprueba que tu script consulta la ruta del registro Wow6432Node además de la clave de desinstalación estándar.
Exportación vacía
Si el CSV exportado sale en blanco, confirma que el software está instalado y que el campo DisplayName tiene valor.
Errores al escribir en el Registro
Si los resultados de cumplimiento no se guardan en el Registro, ejecuta el script con derechos de administrador o en el contexto SYSTEM.
Problemas de Unicode en los CSV
Si los CSV exportados muestran texto ilegible o caracteres que faltan, usa -Encoding UTF8 con Export-Csv para tratar correctamente los caracteres especiales.
Servicios de NinjaOne que te ayudan a detectar software ausente y generar informes
| Qué puede hacer NinjaOne | En qué consiste | Cómo te ayuda |
| Desplegar scripts de inventario y comparación a gran escala | Ejecuta scripts de PowerShell o CMD en todos los dispositivos gestionados | Garantiza que cada endpoint se compare automáticamente con la línea base de software |
| Recopilar etiquetas del registro local para dar visibilidad a la auditoría | Lee del Registro claves de cumplimiento como LastAudit y MissingItems | Ofrece visibilidad local y centralizada a técnicos y auditores |
| Etiquetar dispositivos como «No conformes» | Marca los endpoints que no cumplen los requisitos de la línea base | Acelera la clasificación, ya que los técnicos pueden centrarse en los dispositivos no conformes |
| Alertar cuando falta software | Envía notificaciones cuando no están las aplicaciones obligatorias | Permite que el técnico actúe de inmediato, antes de que los usuarios se vean afectados |
| Generar informes de cumplimiento para los clientes | Produce informes con seguimiento de versiones y estado del despliegue | Aporta informes transparentes a las partes interesadas y facilita las auditorías |
Con NinjaOne, los MSP pueden estandarizar y escalar las auditorías de TI de software y ofrecer a sus clientes informes de cumplimiento transparentes.
Refuerza el cumplimiento y reduce el riesgo con auditorías de software automatizadas
Detectar el software ausente y mantener los endpoints conformes es esencial para la seguridad y para el día a día. Los MSP y los administradores de TI pueden confirmar rápidamente qué dispositivos cumplen los requisitos si recopilan los inventarios de software, los comparan con una línea base y registran los resultados en local y de forma centralizada.
Los informes de cumplimiento de toda la organización dan visibilidad completa sobre todos los clientes, y NinjaOne permite automatizar las auditorías, acelerar la remediación y mantener el cumplimiento continuo a gran escala.
Temas relacionados:
