Puntos clave
- Automatiza la extracción de licencias de M365 con un RMM: ejecuta scripts de PowerShell basados en Graph de forma programada (semanal o mensual) desde tu RMM para guardar en CSV una instantánea de los usuarios y las licencias asignadas, lista para auditar.
- Centraliza los scripts en NinjaOne: añade los scripts a la biblioteca, selecciona los dispositivos y programa las ejecuciones para recopilar datos de uso de forma constante y sin trabajo manual.
- Correlaciona las señales del agente: aprovecha el inventario de software y los datos de procesos del RMM para deducir la actividad SaaS, detectar aplicaciones y licencias sin uso y marcar las candidatas a recuperación.
- Crea informes longitudinales: guarda instantáneas fechadas (por ejemplo, LicenseUsage-YYYY-MM-DD.csv) y compara las diferencias a lo largo del tiempo para descubrir tendencias de adopción y cuentas inactivas cuya licencia puedes recuperar.
- Ponlo en marcha con alertas e informes: usa informes programados y alertas para avisar a los responsables cuando una licencia lleve sin usarse un periodo determinado y para enviar resúmenes de uso periódicos.
El coste de las licencias SaaS crece al mismo ritmo que la empresa y, a medida que los entornos se reparten entre herramientas distintas, el seguimiento se complica. Los administradores pueden apoyarse en plataformas RMM para obtener una visión clara de los datos de uso, seguir las tendencias de adopción y detectar licencias sin utilizar. En esta guía veremos cómo usar scripts y automatización para un seguimiento de licencias SaaS proactivo, eficiente y auditable.
Automatiza el seguimiento del uso de licencias y optimiza tus costes de SaaS.
→ Regístrate en la prueba gratuita de 14 días de NinjaOne RMM.
Scripts RMM personalizados para automatizar el seguimiento de licencias SaaS
Una buena estrategia de gestión de licencias de software permite a las organizaciones identificar y reasignar licencias SaaS infrautilizadas, con el consiguiente ahorro y mejor control del presupuesto. Desde el punto de vista de la gestión, tener visibilidad clara de las licencias ayuda a los administradores a analizar tendencias de uso y a justificar la renovación o la retirada. Automatizar la gestión de licencias SaaS con herramientas RMM aporta visibilidad y cumplimiento constantes, ahorra tiempo, reduce el trabajo manual y recorta costes.
Requisitos previos:
- Plataforma RMM con capacidades de scripting, informes y automatización
- Credenciales de API de las plataformas SaaS
- Privilegios de administrador
- Endpoints compatibles con PowerShell, Bash y CMD
Estrategias de despliegue recomendadas:
| Elige un método | 💻 Mejor para usuarios individuales |
💻💻💻 Mejor para empresas |
| Método 1: scripts de PowerShell para consultar informes de uso de licencias en Microsoft 365 | ✓ | |
| Método 2: monitorizar y correlacionar los datos del agente RMM para detectar señales SaaS | ✓ | |
| Método 3: generar informes longitudinales sobre el uso de SaaS | ✓ |
Nota: esta guía recoge scripts de PowerShell, batch y bash que puedes desplegar en plataformas RMM compatibles con estos lenguajes. Por sencillez y coherencia, usaremos NinjaOne RMM como plataforma de referencia.
Cómo añadir scripts personalizados a la consola de NinjaOne RMM
NinjaOne admite PowerShell, batch y scripts de bash, por lo que sirve para ejecutar todos los scripts de esta guía. Así puedes añadir scripts de automatización personalizados a la biblioteca de scripts de NinjaOne:
- Abre la consola de NinjaOne RMM y ve a:
Administration > Library > Automation.
- Dentro de Automation, pulsa Add y selecciona New Script.
- Rellena los campos y parámetros necesarios para tu script personalizado.
- Introduce el script que quieras para guardarlo como script de automatización.
- Asegúrate de que el lenguaje seleccionado coincide con el del script.
- Una vez guardado, puedes usar las herramientas integradas de NinjaOne para elegir los dispositivos de destino de la automatización marcando la casilla que aparece junto a cada uno.
Método 1: scripts de PowerShell para consultar informes de uso de licencias en Microsoft 365
Caso de uso: los administradores pueden usar scripts de PowerShell para automatizar las auditorías de licencias SaaS desde una plataforma RMM.
Requisito previo: PowerShell 5.1 o posterior.
A. Conectarse a Microsoft 365 para recuperar las licencias asignadas
El siguiente script de PowerShell conecta al administrador con la API de Microsoft Graph con permiso para leer datos de usuarios y licencias. El script recupera todos los usuarios que tienen al menos una licencia asignada, así que resulta ideal para crear un inventario de distribución de licencias.
Connect-MgGraph -Scopes "User.Read.All","Directory.Read.All"
Get-MgUser -All | Where-Object {$_.AssignedLicenses.Count -gt 0} | Select DisplayName, UserPrincipalName, AssignedLicenses
B. Exportar los datos de uso de licencias
Este script exporta todos los datos de usuario a un archivo CSV, perfecto para documentar y registrar el uso de licencias. Con un RMM, los administradores pueden programar la ejecución del script para generar informes de licencias de forma periódica.
Connect-MgGraph -Scopes "User.Read.All","Directory.Read.All"
New-Item -ItemType Directory -Path "C:\Reports" -Force | Out-Null
Get-MgUser | Export-Csv -Path "C:\Reports\LicenseUsage.csv" -NoTypeInformation
CONSEJO: puedes sustituir C:\Reports por la ruta que quieras usar como destino de exportación.
Método 2: monitorizar y correlacionar los datos del agente RMM para detectar señales SaaS
Casos de uso: los administradores pueden aprovechar los servicios de su plataforma RMM para deducir la actividad de las aplicaciones SaaS en los endpoints gestionados.
Detectar procesos de aplicaciones SaaS para un seguimiento de licencias eficaz
Los administradores pueden recurrir a los informes de inventario de software de una plataforma RMM y olvidarse del scripting y del inventario manual. NinjaOne, por ejemplo, muestra patrones de uso, actualizaciones y licencias del software, lo que ayuda a gestionar y asignar aplicaciones de forma eficiente a gran escala.
Un buen seguimiento del inventario de software permite saber cuándo se instala o se desinstala una aplicación y ofrece información sobre licencias sin uso que se pueden reasignar.
Informes programados sobre el inventario de software
RMM como NinjaOne pueden recopilar datos completos sobre instalaciones y desinstalaciones de software en multitud de dispositivos. También ayudan a detectar software no autorizado o sin licencia, lo que los convierte en una pieza clave para el cumplimiento en materia de licencias.
Los administradores pueden reunir esta información en informes programados y disponer así de un inventario de software más claro para planificar y para una gestión de activos de TI proactiva.
¿Es la primera vez que trabajas con plataformas RMM? Consulta las preguntas frecuentes sobre RMM de NinjaOne para encontrar respuestas rápidas a las dudas más habituales.
Método 3: generar informes longitudinales sobre el uso de SaaS
Casos de uso: aprovecha los scripts de PowerShell a través de plataformas RMM para obtener información sobre el uso de licencias SaaS en todo el entorno durante un periodo prolongado. Después, los administradores pueden comparar los informes generados para detectar tendencias de uso a lo largo del tiempo.
Requisitos previos:
- Dispositivos unidos a Microsoft 365 o Azure AD
- Rol de administrador
- Módulo de PowerShell de Microsoft Graph instalado
Nota: el ejemplo siguiente hace seguimiento de los usuarios de Microsoft 365 de una organización y lo guarda como informe semanal. Puedes modificar el script para adaptarlo a los parámetros que prefieras.
A. Script para crear instantáneas periódicas de los datos de uso
El siguiente script recupera todas las cuentas de usuario de Microsoft 365, incluidos los nombres de usuario, los correos electrónicos, el estado de la cuenta y las licencias asignadas. Después lo exporta a C:\SaaSReports como archivo CSV, con un nombre que incluye la fecha de creación.
$date = Get-Date -Format "yyyy-MM-dd"
$path = "C:\SaaSReports"
if (!(Test-Path $path)) { mkdir $path | Out-Null }
Get-MgUser | Export-Csv "$path\LicenseUsage-$date.csv" -NoTypeInformation
B. Script de ejemplo para comparar informes anteriores
Cuando ya se han recopilado suficientes datos de uso de licencias, los administradores pueden usar scripts para comparar informes y representar la evolución del uso. Esto también ayuda a identificar cuentas inactivas cuya licencia se puede recuperar y a justificar el aumento o la reducción de licencias del entorno.
Compare-Object `
-ReferenceObject (Import-Csv "C:\SaaSReports\LicenseUsage-2025-08-01.csv") `
-DifferenceObject (Import-Csv "C:\SaaSReports\LicenseUsage-2025-08-08.csv") `
-Property UserPrincipalName
Aspectos a tener en cuenta
| Riesgos | Consecuencias posibles | Cómo revertirlo |
| Desplegar scripts sin probarlos lo suficiente | No todos los entornos están configurados igual; un script puede comportarse de forma distinta en cada organización. | Prueba los scripts en local, en un entorno controlado, para comprobar que funcionan antes de desplegarlos. |
| Sintaxis incorrecta y errores en los scripts | Una sintaxis incorrecta o una errata pueden provocar fallos y hacer que el script no se ejecute. | Revisa dos veces la sintaxis de los scripts, sobre todo las variables, las rutas y los cmdlets.
Asegúrate de que los módulos de PowerShell necesarios y las carpetas de destino existen antes de escribir archivos. |
| Incompatibilidad de plataforma | Cmdlets como Get-MgUser y los módulos de Microsoft Graph no funcionan en dispositivos macOS ni Linux. | Comprueba que la lógica de tu script es compatible con el sistema operativo y la interfaz de línea de comandos que utilizas. |
Solución de problemas en los informes de uso de licencias SaaS
Problema n.º 1: faltan datos de licencias
Al ejecutar un script para consultar el informe de uso de licencias, a veces se obtienen listas de usuarios y asignaciones de licencias incompletas. Las causas más habituales son tokens de API caducados o ámbitos de permisos que faltan. Una solución es reiniciar la conexión con Microsoft Graph ejecutando este script de PowerShell:
Connect-MgGraph -Scopes "User.Read.All","Directory.Read.All"
Además de contar con el token y los ámbitos correctos, también es importante tener permisos de administrador suficientes para acceder a los datos de licencias. Para comprobarlo, abre el centro de administración de Microsoft 365, ve a la cuenta de usuario que ejecuta el script y entra en roles asignados. Ahí debería aparecer al menos Reports Reader o User Administrator.
Problema n.º 2: los scripts no se ejecutan desde el RMM
Comprueba si la instancia de PowerShell de destino bloquea el script mediante la directiva de ejecución introduciendo lo siguiente:
powershell.exe -ExecutionPolicy Bypass -File "C:\Path\To\YourScript.ps1"
NOTA: sustituye C:\Path\To\YourScript.ps1 por la ruta real de tu script.
Comprueba también si estás ejecutando los scripts como USER o como SYSTEM con este comando:
Write-Output "Running as: $env:USERNAME"
Para monitorizar licencias SaaS, la ejecución como USER da acceso a los datos específicos del usuario y a otras variables ligadas a la sesión iniciada.
Problema n.º 3: registros incompletos en los endpoints
Configura la GPO para que las directivas de auditoría estén habilitadas en los endpoints de destino. Para ello, abre gpmc.msc y ve a Configuración del equipo > Configuración de Windows > Configuración de seguridad > Configuración avanzada de la directiva de auditoría. Comprueba que Auditar inicio de sesión, Auditar cierre de sesión, Auditar inicio de sesión especial y Auditar otros eventos de inicio y cierre de sesión están habilitados en una GPO vinculada a la OU de destino.
Guía de inicio rápido
El RMM de NinjaOne ofrece capacidades de monitorización para seguir el uso de las licencias SaaS de tus clientes a lo largo del tiempo. NinjaOne cuenta con potentes funciones de seguimiento de licencias en el portal de partners de copia de seguridad SaaS:
1. Seguimiento del uso de puestos
- Muestra el porcentaje de puestos de pago utilizados para la copia de seguridad
- Ofrece informes detallados sobre el uso de los puestos
- Registra el número de cuentas activas, desactivadas y totales
2. Informes de cobertura de protección
- Muestra el porcentaje de cuentas con copia de seguridad respecto al total de cuentas
- Ayuda a los partners a garantizar una protección completa en todas las organizaciones
3. Panel de informes
- Visualiza los datos de uso de licencias y de copias de seguridad
- Permite profundizar en la información detallada
- Permite exportar a CSV para analizar los datos sin conexión
Qué tener en cuenta al usar un RMM para el seguimiento de licencias SaaS
Además de crear informes de uso de licencias, las plataformas RMM ofrecen funciones extra para sacar el máximo partido a la gestión y la monitorización de licencias. Estas son algunas consideraciones clave cuando usas la automatización del RMM para seguir las licencias SaaS.
Detectar licencias SaaS inactivas con los informes de uso
Las plataformas RMM ayudan a identificar licencias sin usar para liberarlas o reasignarlas a otros usuarios. Como las licencias SaaS se pagan normalmente por suscripción, las infrautilizadas van consumiendo presupuesto mes a mes. Poder identificar y recuperar rápidamente las licencias inactivas permite reducir el coste del SaaS a largo plazo.
Conservación de datos para el análisis de tendencias
Los administradores pueden usar las plataformas RMM para generar informes longitudinales sobre el uso de SaaS de forma periódica, semanal o mensual. Conservar las instantáneas de uso entre 6 y 12 meses mejora el análisis de tendencias del entorno. Cuanto más tiempo se conserven los datos, más profundidad tendrá la información sobre los patrones de uso de licencias, lo que facilita justificar las decisiones de licenciamiento.
Consideraciones de seguridad
Aunque los RMM ofrecen capacidades de monitorización enormes, conviene evitar recopilar más datos sensibles de los necesarios para no vulnerar la privacidad de los usuarios finales. Por ejemplo, recopilar datos personales en exceso, como el historial del navegador, puede incumplir el Reglamento General de Protección de Datos (RGPD).
Cómo lidiar con los límites de la API
Las API solo pueden recopilar una cantidad determinada de datos de uso en un intervalo, que va de unos minutos a un día. Superar esos límites de frecuencia puede hacer que los scripts fallen y que los informes de uso queden incompletos. Como alternativa, utiliza consultas por lotes o programa los trabajos en horas de poca actividad para aprovechar al máximo el rendimiento y acelerar las consultas masivas a la API.
Servicios de NinjaOne para el seguimiento de licencias SaaS y los informes de uso
Los administradores pueden aprovechar estos servicios de NinjaOne para facilitar el seguimiento y el inventario de licencias SaaS:
| Servicio de NinjaOne | Definición | Cómo ayuda en el seguimiento de licencias SaaS |
| Programación de scripts | NinjaOne permite programar tareas para ejecutar scripts de forma automática. | Programa despliegues de scripts para recopilar periódicamente datos de uso de licencias y de actividad en los endpoints. |
| Alertas | Avisa al instante a los administradores cuando un endpoint cumple una condición concreta. | Configura notificaciones para detectar automáticamente las licencias SaaS que no se han usado tras un periodo determinado. |
| Informes personalizados | Esta función permite crear informes personalizables a partir de plantillas y agiliza su elaboración mediante el envío programado. | Genera automáticamente informes periódicos de uso de licencias de M65, Zoom, Adobe y otras aplicaciones SaaS para seguirlas y monitorizarlas sin esfuerzo. |
| Inventario de activos | Ofrece una vista detallada del software instalado en los endpoints, todo desde un único panel de control. | Una visión completa de los activos informáticos ayuda a asignar licencias de forma estratégica entre los usuarios finales y mejora la gestión de costes. |
| Soporte Multiplataforma | Simplifica la monitorización y la gestión de endpoints con distintos sistemas operativos y evita tener que usar varias plataformas separadas. | Monitorizar y ejecutar scripts en endpoints de cualquier plataforma facilita el seguimiento de licencias SaaS en entornos mixtos. |
| Integración con PSA | El software PSA hace seguimiento de los procesos de negocio, incluidos activos como la asignación y el coste de las licencias SaaS. | La solución PSA independiente de NinjaOne y su integración con distintos sistemas PSA ofrecen amplias capacidades de seguimiento de licencias. |
Consigue visibilidad total de tu entorno y de tus licencias SaaS.
Aprovecha las plataformas RMM para simplificar el seguimiento de licencias SaaS
Hacer seguimiento del uso de las licencias SaaS ayuda a los MSP y a los equipos de informática interna a reducir el gasto por exceso de suscripciones. Los administradores también pueden programar scripts con el RMM para automatizar auditorías, detectar licencias infrautilizadas y evitar asignaciones que no aportan nada. Con los informes longitudinales se descubren tendencias respaldadas por datos a lo largo del tiempo, lo que permite justificar las estrategias de asignación de licencias, ya sea renovarlas o retirarlas.
Flujo de trabajo rápido para el seguimiento de licencias
Para los administradores de RMM, desplegar esta estrategia con éxito sigue un proceso claro y repetible:
- Define el alcance: identifica la plataforma SaaS objetivo (por ejemplo, M365 o Zoom) y los niveles de licencia concretos (SKU) que vas a seguir.
- Protege las credenciales: genera las claves o tokens de API necesarios y guárdalos en el almacén seguro del RMM.
- Desarrolla y prueba el script: crea el script de PowerShell o REST en local y comprueba su salida y sus permisos.
- Despliega desde el RMM: sube el script definitivo a la biblioteca de scripts del RMM y configúralo para que recupere las credenciales del almacén de forma segura.
- Programa la automatización: configura el RMM para que ejecute el script cada semana o cada mes y genere las instantáneas de informe con marca de tiempo.
- Informa y recupera: usa la función de informes personalizados del RMM para ejecutar el script con Compare-Object y recupera de forma proactiva las licencias sin actividad de inicio de sesión dentro del umbral que hayas definido.
Temas relacionados: