Puntos clave
- Crea un inventario completo de equipos y canales con cmdlets nativos de PowerShell para tener visibilidad precisa y en tiempo real.
- Extrae el historial de creación y modificación de canales de los registros de auditoría de Microsoft Purview como evidencia de cumplimiento.
- Analiza el uso del almacenamiento con la API de Graph para detectar puntos calientes de datos y patrones de crecimiento.
- Correlaciona los datos de inventario, auditoría y almacenamiento para marcar problemas de alto riesgo, como los canales grandes e inactivos.
- Mantén una programación automática y conserva las evidencias para demostrar una supervisión continua del cumplimiento.
- Lleva los hallazgos a la práctica derivando los problemas a flujos de corrección y generando informes de gobernanza.
Un crecimiento descontrolado de Microsoft Teams puede provocar brechas de seguridad y problemas de cumplimiento cuando los canales se multiplican sin una supervisión adecuada. Una auditoría de Teams sistemática con las herramientas nativas de PowerShell saca a la luz esos riesgos ocultos y alinea tu entorno de colaboración con las políticas de retención.
En esta guía aprenderás a crear un proceso de auditoría repetible que combina el inventario de canales, los registros de actividad y el análisis de almacenamiento para una gobernanza continua.
Pasos para auditar Microsoft Teams con PowerShell
Las auditorías periódicas con PowerShell te dan la visibilidad imprescindible de tu entorno de Teams para su seguridad y gestión.
📌Caso de uso: realiza auditorías durante las revisiones de cumplimiento, después de un incidente de seguridad, antes de una migración o cuando tengas que atajar la proliferación de canales. Resulta especialmente útil para los MSP que gestionan varios tenants de clientes.
📌Requisitos previos: antes de empezar, asegúrate de cumplir lo siguiente:
- Módulo de PowerShell de Microsoft Teams con permisos de administrador
- Acceso a los registros de auditoría de Microsoft Purview
- PowerShell 7 en Windows 11 y un almacenamiento seguro para las exportaciones
- Opcional: permisos de Graph para los informes de almacenamiento
Cuando lo tengas todo listo, sigue estos pasos.
Paso 1: enumera los equipos y los canales
Empieza tu auditoría de Microsoft Teams creando un inventario completo de todos los equipos y canales.
- Conéctate a Teams PowerShell y exporta todos los equipos:
Connect-MicrosoftTeams
Get-Team | Select-Object DisplayName, GroupId, Visibility | Export-CSV "C:\TeamsAudit\AllTeams.csv" -NoTypeInformation
-
- Este comando se conecta al entorno de Teams y recopila en un archivo CSV todos los datos esenciales, como el nombre del equipo, su ID único y la configuración de privacidad. Acuérdate de sustituir la ruta de archivo de ejemplo, C:\TeamsAudit\AllTeams.csv, por la tuya
- Enumera todos los canales y clasifica sus tipos (por ejemplo, estándar, privado o compartido):
$AllTeams = Get-Team
foreach ($Team in $AllTeams) {
Get-TeamChannel -GroupId $Team.GroupId | Select-Object TeamName, DisplayName, MembershipType, Description | Export-CSV "C:\TeamsAudit\AllChannels.csv" -Append -NoTypeInformation
}
- En el caso de los canales privados, registra sus propietarios con Get-TeamChannelUser para detectar espacios huérfanos.
Este método recurre a cmdlets nativos de PowerShell para obtener datos precisos y en tiempo real de tu entorno de Teams. Al terminar, tendrás la base para el análisis de almacenamiento y el seguimiento de la actividad.
Paso 2: extrae la actividad de los canales de los registros de auditoría de Microsoft Purview
Los registros de auditoría son la prueba clave de quién creó, modificó o eliminó canales de Teams y cuándo lo hizo.
- Conéctate a Exchange Online y busca la actividad de los canales de Teams:
- Instala el módulo si aún no lo tienes:
Install-Module ExchangeOnlineManagement -Scope CurrentUser -Force
-
- Conéctate a PowerShell de Microsoft Purview (cumplimiento):
Connect -IPPSSession
-
- Extrae los eventos de auditoría de los canales de Teams de los últimos 30 días:
$AuditResults = Search-UnifiedAuditLog '
-StartDate (Get-Date).AddDays (-30) '
-EndDate (Get-Date) '
-RecordType MicrosoftTeams '
-Operations "ChannelCreated","ChannelUpdated","ChannelDeleted" '
-ResultSize 5000
-
- Exporta los resultados para analizarlos:
$AuditResults |
Select-Object CreationDate, UserIds, Operations, AuditData |
Export-Csv "C:\TeamsAudit\ChannelActivities.csv" -NoTypeInformation
Write-Host "Audit export complete. File saved to "C:\TeamsAudit\ChannelActivities.csv"
- Exporta los datos de auditoría relevantes para su análisis:
$AuditResults | Select-Object CreationDate, UserIds, Operations, AuditData | Export-CSV "C:\TeamsAudit\ChannelActivities.csv" -NoTypeInformation
- Documenta los parámetros de búsqueda, el intervalo de tiempo y el número de resultados como evidencia de cumplimiento.
Este método consulta el registro de auditoría unificado de Microsoft, que recoge automáticamente todos los eventos del ciclo de vida de los canales en tu tenant. Úsalo cuando investigues incidentes concretos o tengas que demostrar el cumplimiento de las políticas de gobernanza de datos.
Tras la extracción, tendrás un registro con marca temporal de todos los cambios en los canales, listo para correlacionarlo con tu inventario de equipos y documentar la pista de auditoría completa.
Paso 3: añade el contexto de almacenamiento con la API de Graph
Conocer el uso del almacenamiento completa tu auditoría de Teams, ya que revela los puntos calientes de datos y los patrones de crecimiento.
- Crea un registro de aplicación en Azure con permisos de aplicación Sites.Read.All.
- Conéctate a Microsoft Graph y obtén las métricas de almacenamiento:
- Instala el módulo de Microsoft Graph si no lo tienes:
if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) {
Install-Module Microsoft.Graph -Scope CurrentUser -Force
}
-
- Conéctate a Microsoft Graph (solo aplicación, con certificado):
Connect-MgGraph -ClientId "your-client-id" -TenantId "your-tenant-id" -CertificateThumbprint "your-cert-thumbprint" | Out-Null
-
- Obtén todos los grupos de Microsoft 365 con Teams habilitado:
$teams = Get-MgGroup -All | Where-Object { $_.ResourceProvisioningOptions -contains "Team" }
$results = New-Object System.Collections.Generic.List[object]
foreach ($team in $teams) {
try {
$drive = Get-MgGroupDrive -GroupId $team.Id
$site = Get-MgGroupSite -GroupId $team.Id | Select-Object -First 1
$usedPercent = if ($drive?.Quota?.Total) { [math]::Round(($drive.Quota.Used / $drive.Quota.Total) * 100, 2) } else { $null }
$results.Add([PSCustomObject]@{
TeamName = $team.DisplayName
SiteUrl = $site?.WebUrl
TotalBytes = $drive?.Quota?.Total
UsedBytes = $drive?.Quota?.Used
UsedPercent = $usedPercent
State = $drive?.Quota?.State
})
}
catch {
$results.Add([PSCustomObject]@{
TeamName = $team.DisplayName
SiteUrl = $null
TotalBytes = $null
UsedBytes = $null
UsedPercent = $null
State = "error: $($_.Exception.Message)"
})
}
}
$exportFolder = "C:\TeamsAudit"
if (-not (Test-Path $exportFolder)) { New-Item -Path $exportFolder -ItemType Directory | Out-Null }
$csvPath = Join-Path $exportFolder "TeamStorage.csv"
$results | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8
Write-Host "Storage metrics export complete: $csvPath"
- Exporta los datos de almacenamiento de los canales, incluidas las URL de SharePoint y las métricas de uso, para detectar crecimientos rápidos o conflictos de retención.
Este método consulta el almacenamiento de SharePoint que sustenta cada canal de Teams, de modo que obtienes datos de tamaño precisos aunque se haya cambiado el nombre del canal. Úsalo cuando analices los costes de almacenamiento, planifiques migraciones o busques archivos para archivar.
Al combinar las métricas de almacenamiento con tus eventos de auditoría, obtienes un sistema de priorización muy potente para decidir qué canales revisar y completas así tu flujo de informes sobre los canales de Teams.
Paso 4: correlaciona los datos y marca los problemas
Correlacionar los resultados de la auditoría convierte los datos sin procesar en información útil para gestionar los canales de Teams.
- Combina el inventario, los eventos de auditoría y los datos de almacenamiento usando el ID del equipo y los nombres de los canales como claves principales.
- Marca las situaciones de alto riesgo con filtros de PowerShell:
- Busca canales inactivos con mucho almacenamiento:
$InactiveLargeChannels = $ChannelData | Where-Object {
$_.LastActivity -lt (Get-Date).AddDays(-90) -and $_.StorageUsed -gt 1GB
}
-
-
- Este script identifica los canales que llevan 90 días inactivos pero siguen consumiendo más de 1 GB de almacenamiento.
-
-
- Detecta los canales con mucha actividad de creación y eliminación:
$VolatileChannels = $AuditResults | Group-Object ChannelId | Where-Object Count -gt 10
-
-
- Este código agrupa los eventos de auditoría por canal y marca los que registran más de 10 eventos, lo que pone de relieve los canales con cambios inusualmente frecuentes.
-
- Asigna responsables de la corrección y una fecha límite a cada problema marcado.
Esta correlación cruza varias fuentes de datos para revelar patrones que un análisis unidimensional pasaría por alto. Úsala cuando te prepares para auditorías de cumplimiento o quieras implantar una gobernanza proactiva.
Tras la correlación, tendrás una lista priorizada de problemas en los canales con responsables claros, lo que permite una corrección sistemática y mantiene el cumplimiento continuo de la auditoría de Microsoft Teams.
Paso 5: exporta, programa y conserva las evidencias
Una buena documentación convierte tu auditoría en una estrategia de cumplimiento continua en lugar de una comprobación puntual.
- Exporta informes estandarizados con el contexto del tenant, la fecha de la auditoría y los hallazgos:
$ExportData = [PSCustomObject]@{
Tenant = "Contoso"
AuditDate = Get-Date -Format "yyyy-MM-dd"
TeamsCount = $AllTeams.Count
ChannelsCount = $AllChannels.Count
IssuesFlagged = $FlaggedIssues.Count
}
$ExportData | Export-CSV "C:\TeamsAudit\AuditSummary_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
-
- Este código crea un resumen de auditoría de una sola fila (nombre del tenant, fecha de la auditoría, número de equipos, número de canales y número de problemas marcados) y lo guarda en el archivo C:\TeamsAudit\AuditSummary_YYYYMMDD.csv.
- Mantén registros de ejecución con el tiempo de ejecución, el número de registros y los errores.
- Programa ejecuciones automáticas con el Programador de tareas de Windows o tu herramienta RMM:
- Escaneos de inventario semanales
- Extracciones de auditoría completas mensuales
- Retención mínima de 12 meses para todos los artefactos
Este enfoque sistemático genera evidencias con marca temporal y versionadas que demuestran una supervisión continua del cumplimiento. Utilízalo cuando te prepares para auditorías regulatorias o implantes una gobernanza a largo plazo.
Una vez implantado, tendrás una pista de auditoría verificable que cumple los requisitos normativos y te aporta datos históricos para analizar tendencias y planificar la capacidad.
Paso 6: actúa sobre los resultados de la auditoría
Convertir los hallazgos de la auditoría en flujos de trabajo concretos garantiza que la gestión de tus canales de Microsoft Teams aporte un valor real al negocio.
- Deriva los elementos marcados a los equipos correspondientes:
- Proliferación de canales > flujo de limpieza
- Carencias de retención > equipo de revisión de políticas
- Canales grandes e inactivos > proceso de archivado
- Crea un proceso de generación de tickets para los canales sin propietario, de modo que se identifiquen los problemas críticos.
- Documenta las resoluciones y las excepciones en informes mensuales de gobernanza para que los revise la dirección.
Esta fase operativa integra los hallazgos de la auditoría en los flujos de trabajo de TI que ya tienes, para que los problemas se asignen y se sigan en lugar de quedarse en una simple detección. Úsala cuando establezcas una gobernanza continua o tengas que demostrar el cumplimiento ante las partes interesadas.
Una vez implantada, cerrarás el ciclo de la auditoría con resoluciones documentadas y convertirás los datos sin procesar en mejoras medibles en la gestión de tu entorno de Teams.
Automatiza las auditorías de MS Teams con NinjaOne
NinjaOne convierte tu flujo de auditoría en PowerShell en una solución automatizada y lista para la empresa.
- Despliega y programa los scripts de auditoría desde la biblioteca de automatización de NinjaOne.
- Guarda las credenciales de forma segura con la gestión de credenciales de NinjaOne para el acceso de las cuentas de servicio.
- Configura la creación automática de tickets para:
- Canales sin propietario que hay que asignar
- Canales grandes e inactivos que hay que archivar
- Cambios de configuración frecuentes que apuntan a inestabilidad
Esta integración aprovecha la capacidad de NinjaOne para enviar scripts a los endpoints y su almacenamiento seguro de credenciales, de modo que eliminas la intervención manual sin perder la integridad de la pista de auditoría. Úsala cuando necesites escalar la gestión de Teams en varios clientes o elaborar informes para la dirección.
Guía de inicio rápido
NinjaOne puede auditar los canales de Microsoft Teams mediante PowerShell. Así se hace:
- Instala los módulos necesarios:
Asegúrate de tener instalados los módulos de PowerShell MicrosoftTeams y ExchangeOnlineManagement.
- Conéctate a Microsoft 365:
powershell
Connect-MicrosoftTeams
- Obtén los registros de auditoría:
Usa el cmdlet Search-UnifiedAuditLog para recuperar los registros de auditoría relacionados con la actividad de los canales de Teams:
powershell
Filtra y exporta los datos:
Filtra los resultados para obtener los detalles de las creaciones de canales y expórtalos a un archivo CSV:
powershell
$auditRecords | Select-Object
@{Name='ChannelName';Expression={$_.Parameters['ChannelName']}},
@{Name='CreatedBy';Expression={$_.Parameters['CreatedBy']}},
@{Name='CreatedTime';Expression={$_.CreatedTime}} |
Export-Csv -Path "C:TeamsChannelAudit.csv" -NoTypeInformation
Cumplimiento continuo gracias a la automatización de la auditoría de Microsoft Teams
Una auditoría completa de Teams combina el inventario de canales, los registros de actividad de Purview y el análisis del almacenamiento para transformar una proliferación caótica en una colaboración bien gestionada.
Si automatizas el proceso con PowerShell y programas ejecuciones periódicas, mantienes una visibilidad continua que te permite anticiparte a los riesgos de seguridad y a los requisitos de cumplimiento.
Con esta disciplina, tu entorno de Teams seguirá optimizado tanto para la productividad como para la gobernanza a largo plazo.
Temas relacionados: