Points clés
- Dressez un inventaire complet des équipes et des canaux avec les cmdlets PowerShell natives, pour une visibilité exacte et en temps réel.
- Extrayez l’historique de création et de modification des canaux des journaux d’audit Microsoft Purview comme preuves de conformité.
- Analysez l’utilisation du stockage via l’API Graph pour repérer les zones de concentration de données et les tendances de croissance.
- Croisez les données d’inventaire, d’audit et de stockage pour signaler les situations à haut risque, comme les canaux volumineux inactifs.
- Maintenez une planification automatisée et une conservation des preuves afin de démontrer un suivi continu de la conformité.
- Exploitez les constats en orientant les problèmes vers des workflows de remédiation et en produisant des rapports de gouvernance.
Une croissance incontrôlée de Microsoft Teams peut créer des failles de sécurité et des problèmes de conformité lorsque les canaux se multiplient sans véritable surveillance. Un audit Teams mené de façon systématique avec les outils PowerShell natifs met au jour ces risques cachés et permet d’aligner votre environnement collaboratif sur vos politiques de rétention.
Ce guide vous explique comment mettre en place un processus d’audit reproductible qui combine inventaire des canaux, journaux d’activité et analyse du stockage pour assurer une gouvernance continue.
Auditer Microsoft Teams avec PowerShell : les étapes
Des audits PowerShell réguliers offrent une visibilité essentielle sur votre environnement Teams, à la fois pour la sécurité et pour la gestion.
📌Cas d’utilisation : réalisez des audits lors des revues de conformité, après un incident de sécurité, avant une migration ou lorsque vous devez maîtriser la prolifération des canaux. C’est particulièrement utile pour les MSP qui gèrent plusieurs tenants clients.
📌Prérequis : avant de commencer, assurez-vous de disposer des éléments suivants :
- le module PowerShell Microsoft Teams avec des permissions d’administrateur
- un accès aux journaux d’audit Microsoft Purview
- PowerShell 7 sur Windows 11 et un espace de stockage sécurisé pour les exports
- facultatif : des permissions Graph pour le reporting du stockage
Une fois ces éléments réunis, suivez les étapes ci-dessous.
Étape 1 : recenser les équipes et les canaux
Commencez votre audit Microsoft Teams en dressant un inventaire complet de toutes les équipes et de tous les canaux.
- Connectez-vous à Teams PowerShell et exportez toutes les équipes :
Connect-MicrosoftTeamsGet-Team | Select-Object DisplayName, GroupId, Visibility | Export-CSV "C:\TeamsAudit\AllTeams.csv" -NoTypeInformation
- Cette commande se connecte à l’environnement Teams et récupère tous les détails essentiels, comme le nom de l’équipe, son identifiant unique et ses paramètres de confidentialité, dans un fichier CSV. Pensez à remplacer le chemin de fichier donné en exemple, C:\TeamsAudit\AllTeams.csv, par le vôtre
- Listez tous les canaux et classez-les par type (standard, privé, partagé, etc.) :
$AllTeams = Get-Teamforeach ($Team in $AllTeams) {Get-TeamChannel -GroupId $Team.GroupId | Select-Object TeamName, DisplayName, MembershipType, Description | Export-CSV "C:\TeamsAudit\AllChannels.csv" -Append -NoTypeInformation}
- Pour les canaux privés, relevez les propriétaires afin de repérer les espaces orphelins à l’aide de Get-TeamChannelUser.
Cette méthode s’appuie sur les cmdlets PowerShell natives pour obtenir des données exactes et en temps réel sur votre environnement Teams. Une fois l’opération terminée, vous disposez d’une base solide pour l’analyse du stockage et le suivi de l’activité.
Étape 2 : extraire les activités des canaux des journaux d’audit Microsoft Purview
Les journaux d’audit fournissent des preuves déterminantes : qui a créé, modifié ou supprimé des canaux Teams, et à quel moment.
- Connectez-vous à Exchange Online et recherchez les activités des canaux Teams :
- Installez le module s’il ne l’est pas déjà :
Install-Module ExchangeOnlineManagement -Scope CurrentUser -Force
- Connectez-vous à Microsoft Purview (Compliance) PowerShell :
Connect -IPPSSession
- Extrayez les événements d’audit des canaux Teams des 30 derniers jours :
$AuditResults = Search-UnifiedAuditLog '-StartDate (Get-Date).AddDays (-30) '-EndDate (Get-Date) '-RecordType MicrosoftTeams '-Operations "ChannelCreated","ChannelUpdated","ChannelDeleted" '-ResultSize 5000
- Exportez les résultats pour l’analyse :
$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"
- Exportez les données d’audit pertinentes pour l’analyse :
$AuditResults | Select-Object CreationDate, UserIds, Operations, AuditData | Export-CSV "C:\TeamsAudit\ChannelActivities.csv" -NoTypeInformation
- Documentez vos paramètres de recherche, la plage horaire et le nombre de résultats comme preuves de conformité.
Cette méthode interroge le journal d’audit unifié de Microsoft, qui enregistre automatiquement tous les événements du cycle de vie des canaux dans votre tenant. Utilisez-la pour enquêter sur un incident précis ou démontrer la conformité à vos politiques de gouvernance des données.
À l’issue de l’extraction, vous disposez d’un historique horodaté de toutes les modifications de canaux, prêt à être croisé avec votre inventaire d’équipes pour constituer une piste d’audit complète.
Étape 3 : ajouter le contexte de stockage avec l’API Graph
Comprendre l’utilisation du stockage complète votre audit Teams en révélant les zones de concentration de données et les tendances de croissance.
- Créez un enregistrement d’application Azure avec les permissions applicatives Sites.Read.All.
- Connectez-vous à Microsoft Graph et récupérez les métriques de stockage :
- Installez le module Microsoft Graph s’il est absent :
if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) {Install-Module Microsoft.Graph -Scope CurrentUser -Force}
- Connectez-vous à Microsoft Graph (application uniquement, certificat) :
Connect-MgGraph -ClientId "your-client-id" -TenantId "your-tenant-id" -CertificateThumbprint "your-cert-thumbprint" | Out-Null
- Récupérez tous les groupes Microsoft 365 associés à une équipe :
$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.DisplayNameSiteUrl = $site?.WebUrlTotalBytes = $drive?.Quota?.TotalUsedBytes = $drive?.Quota?.UsedUsedPercent = $usedPercentState = $drive?.Quota?.State})}catch {$results.Add([PSCustomObject]@{TeamName = $team.DisplayNameSiteUrl = $nullTotalBytes = $nullUsedBytes = $nullUsedPercent = $nullState = "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 UTF8Write-Host "Storage metrics export complete: $csvPath"
- Exportez les données de stockage des canaux, y compris les URL SharePoint et les métriques d’utilisation, afin de repérer les croissances rapides ou les conflits de rétention.
Cette méthode interroge le stockage SharePoint sous-jacent qui alimente chaque canal Teams, ce qui donne des tailles exactes même lorsqu’un canal a été renommé. Utilisez-la pour analyser les coûts de stockage, préparer des migrations ou identifier les éléments à archiver.
En associant les métriques de stockage à vos événements d’audit, vous obtenez un puissant système de priorisation des canaux à examiner, ce qui complète votre workflow de reporting sur les canaux Teams.
Étape 4 : croiser les données et signaler les problèmes
Le croisement des résultats d’audit transforme des données brutes en enseignements exploitables pour la gestion des canaux Teams.
- Combinez votre inventaire, vos événements d’audit et vos données de stockage en utilisant l’ID d’équipe et le nom de canal comme clés primaires.
- Signalez les situations à haut risque à l’aide de filtres PowerShell :
- Repérez les canaux inactifs qui occupent beaucoup d’espace :
$InactiveLargeChannels = $ChannelData | Where-Object {$_.LastActivity -lt (Get-Date).AddDays(-90) -and $_.StorageUsed -gt 1GB}
- Ce script identifie les canaux restés inactifs au cours des 90 derniers jours tout en consommant plus de 1 Go de stockage.
- Identifiez les canaux qui font l’objet de créations/suppressions fréquentes :
$VolatileChannels = $AuditResults | Group-Object ChannelId | Where-Object Count -gt 10
- Ce code regroupe les événements d’audit par canal et signale ceux qui comptent plus de 10 événements enregistrés, mettant ainsi en évidence les canaux soumis à des changements inhabituellement fréquents.
- Attribuez un responsable et une date d’échéance à chaque problème signalé.
Ce croisement recoupe plusieurs sources de données pour révéler des tendances qu’une analyse à une seule dimension laisserait passer entre les mailles du filet. Utilisez cette approche pour préparer un audit de conformité ou mettre en place une gouvernance proactive.
Après le croisement, vous disposez d’une liste priorisée de problèmes de canaux, avec des responsables clairement désignés, ce qui permet une remédiation méthodique et un audit Microsoft Teams conforme dans le temps.
Étape 5 : exporter, planifier et conserver les preuves
Une documentation rigoureuse fait passer votre audit d’une vérification ponctuelle à une véritable stratégie de conformité continue.
- Exportez des rapports normalisés contenant le contexte du tenant, la date de l’audit et les constats :
$ExportData = [PSCustomObject]@{Tenant = "Contoso"AuditDate = Get-Date -Format "yyyy-MM-dd"TeamsCount = $AllTeams.CountChannelsCount = $AllChannels.CountIssuesFlagged = $FlaggedIssues.Count}$ExportData | Export-CSV "C:\TeamsAudit\AuditSummary_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
- Ce code crée un résumé d’audit d’une seule ligne (nom du tenant, date de l’audit, nombre d’équipes, nombre de canaux et nombre de problèmes signalés) et l’enregistre dans le fichier C:\TeamsAudit\AuditSummary_YYYYMMDD.csv.
- Conservez des journaux d’exécution indiquant la durée, le nombre d’enregistrements et les erreurs.
- Planifiez des exécutions automatiques via le Planificateur de tâches Windows ou votre outil RMM :
- analyses d’inventaire hebdomadaires
- extractions d’audit complètes mensuelles
- conservation minimale de 12 mois pour tous les artefacts
Cette approche méthodique produit des preuves horodatées et versionnées qui démontrent un suivi continu de la conformité. Utilisez-la pour préparer des audits réglementaires ou instaurer une gouvernance de long terme.
Après l’implémentation, vous disposez d’une piste d’audit vérifiable qui répond aux exigences de conformité tout en fournissant des données historiques pour l’analyse des tendances et la planification des capacités.
Étape 6 : agir sur les résultats de l’audit
Convertir les constats d’audit en workflows concrets garantit que votre gestion des canaux Microsoft Teams apporte une réelle valeur à l’entreprise.
- Orientez les éléments signalés vers les équipes concernées :
- Prolifération des canaux > workflow de nettoyage
- Lacunes de rétention > équipe chargée de revoir les politiques
- Canaux volumineux inactifs > processus d’archivage
- Mettez en place un processus de création de tickets pour les canaux sans propriétaire, afin d’identifier les problèmes critiques.
- Documentez les résolutions et les exceptions dans des rapports de gouvernance mensuels destinés à la direction.
Cette phase opérationnelle intègre les constats d’audit aux workflows informatiques existants : les problèmes sont réellement attribués et suivis, et pas simplement identifiés. Utilisez cette approche pour instaurer une gouvernance durable ou démontrer votre conformité aux parties prenantes.
Après l’implémentation, vous bouclez le cycle de l’audit avec des résolutions documentées, et transformez des données brutes en améliorations mesurables dans la gestion de votre environnement Teams.
Industrialiser les audits Microsoft Teams avec NinjaOne
NinjaOne transforme votre workflow d’audit PowerShell en une solution automatisée, prête pour les grandes entreprises.
- Déployez et planifiez vos scripts d’audit via la bibliothèque d’automatisation de NinjaOne.
- Stockez les identifiants de manière sécurisée grâce à la gestion des identifiants de NinjaOne pour l’accès aux comptes de service.
- Configurez des déclencheurs de tickets automatiques pour :
- les canaux sans propriétaire qui doivent être attribués
- les canaux volumineux inactifs à archiver
- les changements de configuration fréquents, signe d’instabilité
Cette intégration tire parti de la capacité de NinjaOne à envoyer des scripts vers les terminaux et à stocker les identifiants en toute sécurité, ce qui supprime les interventions manuelles sans compromettre l’intégrité de la piste d’audit. Utilisez cette approche lorsque vous étendez la gestion de Teams à plusieurs clients ou que vous devez produire du reporting pour la direction.
Guide de démarrage rapide
NinjaOne permet d’auditer les canaux Microsoft Teams avec PowerShell. Voici comment procéder :
- Installer les modules requis :
Assurez-vous que les modules PowerShell MicrosoftTeams et ExchangeOnlineManagement sont installés.
- Se connecter à Microsoft 365 :
powershell
Connect-MicrosoftTeams
- Récupérer les journaux d’audit :
Utilisez la cmdlet Search-UnifiedAuditLog pour récupérer les enregistrements d’audit liés aux activités des canaux Teams :
powershell
Filtrer et exporter les données :
Filtrez les résultats pour obtenir les détails des créations de canaux, puis exportez-les dans un fichier 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
Vers une conformité continue grâce à l’automatisation de l’audit Microsoft Teams
Un audit Teams complet associe l’inventaire des canaux, les journaux d’activité Purview et l’analyse du stockage pour transformer une prolifération désordonnée en collaboration maîtrisée.
En automatisant ce processus avec PowerShell et en planifiant des exécutions régulières, vous conservez une visibilité permanente qui vous permet de traiter les risques de sécurité et les exigences de conformité de façon proactive.
Cette rigueur garantit que votre environnement Teams reste optimisé, sur le long terme, autant pour la productivité que pour la gouvernance.
Sujets connexes :

