/
/

Cómo detectar software ausente en el inventario mediante script y generar informes de cumplimiento

por Team Ninja
How to Detect Missing Software Inventory Items via Script and Generate Compliance Reports blog banner image

Resumen instantáneo

Este post ofrece una lista completa de comandos CMD básicos y una inmersión profunda en los comandos de Windows, con más de 70 comandos cmd esenciales tanto para principiantes como para usuarios avanzados. Explica comandos prácticos del símbolo del sistema para la gestión de archivos, la navegación por directorios, la solución de problemas de red, las operaciones de disco y la automatización con ejemplos reales para mejorar la productividad. Tanto si estás aprendiendo los comandos básicos de cmd como si ya dominas las herramientas avanzadas de la CLI de Windows, esta guía te ayudará a utilizar el Símbolo del sistema de forma más eficaz.

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" -Force
Set-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:

  1. 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.
  2. 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

  1. A continuación, revisa las columnas clave. Comprueba que el informe maestro tenga los campos esenciales:
    1. Nombre del dispositivo
    2. Software ausente
    3. Estado de cumplimiento
    4. Marca de tiempo
  2. 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

RiesgosPosibles consecuenciasSolución
Faltan archivos CSV de algunos dispositivosEl 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 funcionanSe 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 CSVEl 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:

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é consisteCómo te ayuda
Desplegar scripts de inventario y comparación a gran escalaEjecuta scripts de PowerShell o CMD en todos los dispositivos gestionadosGarantiza 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íaLee del Registro claves de cumplimiento como LastAudit y MissingItemsOfrece 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 baseAcelera la clasificación, ya que los técnicos pueden centrarse en los dispositivos no conformes
Alertar cuando falta softwareEnvía notificaciones cuando no están las aplicaciones obligatoriasPermite que el técnico actúe de inmediato, antes de que los usuarios se vean afectados
Generar informes de cumplimiento para los clientesProduce informes con seguimiento de versiones y estado del despliegueAporta 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:

FAQs

Consulta la lista de software instalado en las claves de desinstalación del registro de Windows con PowerShell y compárala con una lista base de aplicaciones obligatorias. Toda aplicación obligatoria que no aparezca en la lista de instaladas se marca como ausente y puede exportarse a un informe CSV.

Una línea base de software es la lista definitiva de aplicaciones que deben estar presentes en un dispositivo para considerarlo conforme. Normalmente se definen por sede, rol o cliente, de modo que un kiosco, la estación de trabajo de un ingeniero y el servidor de un cliente pueden tener requisitos distintos.

Sí. Puedes usar CMD con WMIC para exportar una lista básica del software instalado a un archivo de texto. WMIC está obsoleto en las versiones actuales de Windows, así que considéralo una alternativa para entornos antiguos y no una solución a largo plazo.

NinjaOne ejecuta scripts de inventario y comparación en los dispositivos gestionados, lee los valores de cumplimiento del Registro y los pasa a campos personalizados, y avisa a los técnicos cuando falta software obligatorio. Sus informes integrados de inventario de software dan visibilidad a toda la organización sin recopilar CSV a mano.

Quizá también te interese…

¿Listo para simplificar los aspectos más complejos de las TI?