Belangrijkste punten
- Bouw een volledige inventaris van teams en kanalen op met native PowerShell-cmdlets voor nauwkeurig, actueel inzicht.
- Haal de aanmaak- en wijzigingshistorie van kanalen uit de auditlogboeken van Microsoft Purview als compliancebewijs.
- Analyseer het opslaggebruik via de Graph API om datahotspots en groeipatronen op te sporen.
- Correleer inventaris-, audit- en opslaggegevens om risicovolle situaties te markeren, zoals grote inactieve kanalen.
- Houd geautomatiseerde planning en bewijsbewaring in stand om doorlopende compliance monitoring aan te tonen.
- Maak bevindingen operationeel door problemen naar herstelworkflows te sturen en governancerapporten te genereren.
Ongecontroleerde groei van Microsoft Teams kan leiden tot beveiligingslekken en complianceproblemen wanneer kanalen zich vermenigvuldigen zonder goed toezicht. Een systematische Teams-audit met de native PowerShell-tools brengt deze verborgen risico’s aan het licht en stemt uw samenwerkingsomgeving af op het bewaarbeleid.
In deze handleiding bouwt u stap voor stap een herhaalbaar auditproces op dat kanaalinventarisatie, activiteitenlogboeken en opslaganalyse combineert voor doorlopende governance.
Start automatische herstelworkflows zodra configuratierisico’s worden gemarkeerd.
Microsoft Teams auditen met PowerShell: stap voor stap
Regelmatige PowerShell-audits geven u essentieel inzicht in uw Teams-omgeving op het gebied van beveiliging en beheer.
📌Use case: voer audits uit tijdens compliancebeoordelingen, na beveiligingsincidenten, vóór migraties of wanneer u wildgroei van kanalen aanpakt. Dit is vooral waardevol voor MSP’s die meerdere klanttenants beheren.
📌Vereisten: zorg dat u het volgende hebt voordat u verdergaat:
- De PowerShell-module van Microsoft Teams met beheerdersrechten
- Toegang tot de auditlogboeken van Microsoft Purview
- PowerShell 7 op Windows 11 en veilige opslag voor exports
- Optioneel: Graph-machtigingen voor opslagrapportage
Zodra u dit klaar hebt, volgt u de onderstaande stappen.
Stap 1: teams en kanalen inventariseren
Begin uw Microsoft Teams-audit met een volledige inventarisatie van alle teams en kanalen.
- Maak verbinding met Teams PowerShell en exporteer alle teams:
Connect-MicrosoftTeams
Get-Team | Select-Object DisplayName, GroupId, Visibility | Export-CSV "C:\TeamsAudit\AllTeams.csv" -NoTypeInformation
-
- Deze opdracht maakt verbinding met de Teams-omgeving en haalt alle essentiële gegevens op, zoals teamnaam, unieke ID en privacy-instellingen, naar een CSV-bestand. Vergeet niet het voorbeeldbestandspad C:\TeamsAudit\AllTeams.csv te vervangen door uw eigen pad
- Maak een lijst van alle kanalen en classificeer de typen (bijvoorbeeld standaard, privé, gedeeld):
$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
}
- Leg bij privékanalen de eigenaren vast om verweesde kanalen te vinden met Get-TeamChannelUser.
Deze methode gebruikt native PowerShell-cmdlets voor nauwkeurige, actuele gegevens over uw Teams-omgeving. Daarna hebt u een basis voor opslaganalyse en het volgen van activiteiten.
Stap 2: kanaalactiviteiten ophalen uit de auditlogboeken van Microsoft Purview
Auditlogboeken leveren cruciaal bewijs van wie Teams-kanalen heeft aangemaakt, gewijzigd of verwijderd en wanneer dat gebeurde.
- Maak verbinding met Exchange Online en zoek naar activiteiten in Teams-kanalen:
- Installeer de module als deze nog niet is geïnstalleerd:
Install-Module ExchangeOnlineManagement -Scope CurrentUser -Force
-
- Maak verbinding met Microsoft Purview (Compliance) PowerShell:
Connect-IPPSSession
-
- Haal de auditgebeurtenissen van Teams-kanalen van de afgelopen 30 dagen op:
$StartDate = (Get-Date).AddDays(-30)
$EndDate = Get-Date
$AuditResults = Search-UnifiedAuditLog `
-StartDate $StartDate `
-EndDate $EndDate `
-RecordType MicrosoftTeams `
-Operations ChannelCreated,ChannelUpdated,ChannelDeleted `
-ResultSize 5000
-
- Exporteer de resultaten voor de 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"
- Exporteer de relevante auditgegevens voor analyse:
$AuditResults | Select-Object CreationDate, UserIds, Operations, AuditData | Export-CSV "C:\TeamsAudit\ChannelActivities.csv" -NoTypeInformation
- Leg uw zoekparameters, tijdsbereik en aantallen resultaten vast als compliancebewijs.
Deze methode werkt door een query uit te voeren op het unified audit log van Microsoft, dat automatisch alle lifecycle-gebeurtenissen van kanalen in uw tenant registreert. Gebruik deze aanpak wanneer u specifieke incidenten onderzoekt of compliance met uw databeleid moet aantonen.
Na de extractie hebt u een chronologisch overzicht van alle kanaalwijzigingen, klaar om te koppelen aan uw teaminventaris voor een volledige audittrail.
Stap 3: opslagcontext toevoegen met de Graph API
Inzicht in het opslaggebruik maakt uw Teams-audit compleet, omdat het datahotspots en groeipatronen zichtbaar maakt.
- Maak een app-registratie in Microsoft Entra ID, voeg de toepassingsmachtiging Microsoft Graph Sites.Read.All toe en verleen beheerderstoestemming.
- Maak verbinding met Microsoft Graph en haal de opslaggegevens op:
- Installeer de Microsoft Graph-module als deze ontbreekt:
if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) {
Install-Module Microsoft.Graph -Scope CurrentUser -Force
}
-
- Maak verbinding met Microsoft Graph (alleen app, certificaat):
Connect-MgGraph -ClientId "your-client-id" -TenantId "your-tenant-id" -CertificateThumbprint "your-cert-thumbprint" | Out-Null
-
- Haal alle Microsoft 365-groepen met Teams ingeschakeld op:
$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"
- Exporteer de opslaggegevens van kanalen, inclusief SharePoint-URL’s en gebruiksstatistieken, om snelle groei of conflicten met het bewaarbeleid op te sporen.
Deze methode werkt door een query uit te voeren op de onderliggende SharePoint-opslag achter elk Teams-kanaal. Zo krijgt u nauwkeurige omvanggegevens, ook als kanalen zijn hernoemd. Gebruik deze aanpak wanneer u opslagkosten onderzoekt, migraties plant of archieven identificeert.
Door opslaggegevens te combineren met uw auditgebeurtenissen, krijgt u een krachtig prioriteringssysteem voor kanalen die beoordeling verdienen. Daarmee is uw rapportage over Teams-kanalen compleet.
Stap 4: gegevens correleren en problemen markeren
Door uw auditresultaten te correleren, verandert ruwe data in bruikbare inzichten voor het beheer van Teams-kanalen.
- Combineer uw inventaris, auditgebeurtenissen en opslaggegevens met Team ID en kanaalnamen als primaire sleutels.
- Markeer risicovolle situaties met PowerShell-filters:
- Zoek inactieve kanalen met veel opslag:
$InactiveLargeChannels = $ChannelData | Where-Object {
$_.LastActivity -lt (Get-Date).AddDays(-90) -and $_.StorageUsed -gt 1GB
}
-
-
- Dit script vindt kanalen die de afgelopen 90 dagen inactief waren en toch meer dan 1 GB aan opslag gebruiken.
-
-
- Spoor kanalen op waar vaak wordt aangemaakt of verwijderd:
$VolatileChannels = $AuditResults | Group-Object ChannelId | Where-Object Count -gt 10
-
-
- Deze code groepeert auditgebeurtenissen per kanaal en markeert kanalen met meer dan 10 geregistreerde gebeurtenissen. Zo vallen kanalen met ongewoon veel wijzigingen direct op.
-
- Wijs voor elk gemarkeerd probleem een verantwoordelijke en een deadline toe.
Deze correlatie werkt door meerdere gegevensbronnen met elkaar te vergelijken, waardoor patronen zichtbaar worden die een eendimensionale analyse zou missen. Gebruik deze aanpak bij de voorbereiding op compliance-audits of bij het invoeren van proactieve governance.
Na de correlatie hebt u een geprioriteerde lijst met kanaalproblemen en duidelijke verantwoordelijkheden. Dat maakt systematisch herstel mogelijk en houdt uw Microsoft Teams-audits doorlopend compliant.
Stap 5: bewijs exporteren, inplannen en bewaren
Goede documentatie maakt van uw audit een doorlopende compliancestrategie in plaats van een eenmalige controle.
- Exporteer gestandaardiseerde rapporten met de tenantcontext, auditdatum en bevindingen:
$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
-
- Deze code maakt een auditsamenvatting van één regel (tenantnaam, auditdatum, aantal teams, aantal kanalen en aantal gemarkeerde problemen) en slaat die op in het bestand C:\TeamsAudit\AuditSummary_YYYYMMDD.csv.
- Houd uitvoeringslogboeken bij met de looptijd, aantallen records en fouten.
- Plan automatische runs via Taakplanner van Windows of uw RMM-tool:
- Wekelijkse inventarisscans
- Maandelijkse uitgebreide auditruns
- Minimaal 12 maanden bewaartermijn voor alle artefacten
Deze systematische aanpak levert bewijs met tijdstempel en versiebeheer, waarmee u doorlopende compliance monitoring aantoont. Gebruik deze methode bij de voorbereiding op wettelijke audits of bij het opzetten van governance voor de lange termijn.
Na de implementatie beschikt u over een verifieerbare audittrail die aan de compliance-eisen voldoet en tegelijk historische gegevens levert voor trendanalyse en capaciteitsplanning.
Stap 6: aan de slag met de auditresultaten
Door auditbevindingen om te zetten in concrete workflows, levert uw beheer van Microsoft Teams-kanalen echte bedrijfswaarde op.
- Stuur gemarkeerde items door naar de juiste teams:
- Wildgroei van kanalen > opschoonworkflow
- Hiaten in het bewaarbeleid > team voor beleidsevaluatie
- Grote inactieve kanalen > archiveringsproces
- Zet een proces op voor het aanmaken van tickets voor kanalen zonder eigenaar, zodat kritieke problemen zichtbaar worden.
- Documenteer oplossingen en uitzonderingen in maandelijkse governancerapporten voor het management.
In deze operationele fase koppelt u de auditbevindingen aan bestaande IT-workflows, zodat problemen niet alleen worden gesignaleerd maar ook worden toegewezen en gevolgd. Gebruik deze aanpak wanneer u doorlopende governance opzet of compliance aan stakeholders wilt aantonen.
Na de implementatie sluit u de auditcyclus af met gedocumenteerde oplossingen en zet u ruwe data om in meetbare verbeteringen in het beheer van uw Teams-omgeving.
Ontdek hoe NinjaOne RMM het inplannen van scripts en de monitoring van endpoints over alle tenants centraliseert.
Geautomatiseerde MS Teams-audits operationeel maken met NinjaOne
NinjaOne maakt van uw PowerShell-auditworkflow een geautomatiseerde oplossing die klaar is voor enterprise-gebruik.
- Gebruik auditscripts en plan ze in via de NinjaOne Automation Library.
- Sla referenties veilig op met het referentiebeheer van NinjaOne voor toegang via serviceaccounts.
- Configureer automatische tickettriggers voor:
- Kanalen zonder eigenaar die moeten worden toegewezen
- Grote inactieve kanalen die gearchiveerd moeten worden
- Frequente configuratiewijzigingen die op instabiliteit wijzen
Deze integratie werkt doordat NinjaOne scripts naar endpoints kan sturen en referenties veilig kan opslaan. Zo is handmatig ingrijpen niet meer nodig en blijft de audittrail intact. Gebruik deze aanpak wanneer u Teams-beheer opschaalt over meerdere klanten of rapportage op directieniveau nodig hebt.
Quick-start guide
NinjaOne kan Microsoft Teams-kanalen auditen via PowerShell. Zo doet u dat:
- Installeer de benodigde modules:
Zorg dat de PowerShell-modules MicrosoftTeams en ExchangeOnlineManagement zijn geïnstalleerd.
- Maak verbinding met Microsoft 365:
powershell
Connect-MicrosoftTeams
- Exporteer teams en kanalen
Voer het volgende PowerShell-script uit om de gegevens van teams en kanalen naar CSV-bestanden te exporteren.
```powershell
$Folder = "C:\TeamsAudit"
New-Item -Path $Folder -ItemType Directory -Force | Out-Null
$Teams = Get-Team
$Teams |
Select-Object DisplayName, GroupId, Visibility |
Export-Csv "$Folder\AllTeams.csv" -NoTypeInformation
$Channels = foreach ($Team in $Teams) {
try {
Get-TeamChannel -GroupId $Team.GroupId -ErrorAction Stop |
Select-Object @{
Name = "TeamName"
Expression = { $Team.DisplayName }
}, @{
Name = "TeamId"
Expression = { $Team.GroupId }
}, DisplayName, MembershipType, Description
}
catch {
Write-Warning "Could not retrieve channels for '$($Team.DisplayName)': $($_.Exception.Message)"
}
}
$Channels |
Export-Csv "$Folder\AllChannels.csv" -NoTypeInformation
Write-Host "Export complete. Files saved to $Folder"
```
Het script exporteert teamnamen, ID’s en zichtbaarheidsinstellingen naar `AllTeams.csv`. Kanaalnamen, bijbehorende teamnamen en ID’s, lidmaatschapstypen en beschrijvingen gaan naar `AllChannels.csv`.
Doorlopende compliance met geautomatiseerde Microsoft Teams-audits
Een complete Teams-audit combineert kanaalinventarisatie, activiteitenlogboeken uit Purview en opslaganalytics en verandert chaotische wildgroei in beheerde samenwerking.
Door dit proces te automatiseren met PowerShell en regelmatige runs in te plannen, houdt u doorlopend zicht op uw omgeving en pakt u beveiligingsrisico’s en compliance-eisen proactief aan.
Met deze gedisciplineerde aanpak blijft uw Teams-omgeving op de lange termijn geoptimaliseerd voor zowel productiviteit als governance.
Gerelateerde onderwerpen: