Belangrijkste punten
- Bouw een gebruikersinventaris op met de Microsoft Graph PowerShell-module via Get-MgUser en voeg daarna gebruiksstatistieken uit Graph Reports toe.
- Verrijk inventarissen met mailboxstatistieken uit Exchange Online om te grote mailboxen, inactieve accounts en migratiekandidaten te signaleren.
- Normaliseer eigenschapsnamen en standaardiseer de naamgeving van exports zodat datasets netjes samenvallen en in elke tenant auditklaar blijven.
- Automatiseer het verzamelen met app-only-authenticatie, retrylogica en gestructureerde logging zodat onbeheerde workflows veilig en stabiel blijven.
Gebruikersactiviteitsrapporten van Microsoft 365 (voorheen Office 365) zijn cruciaal om het servicegebruik te volgen, de productiviteit van klanten te waarborgen en beveiliging en compliance op peil te houden. Met PowerShell beschikt u over één aanpak om bruikbare inzichten te verzamelen uit Exchange Online, Teams, SharePoint en OneDrive.
Microsoft-gebruikersactiviteitsrapporten verzamelen met PowerShell
Microsoft Graph PowerShell biedt gegevens van hoge kwaliteit en sterke filtermogelijkheden. Met PowerShell combineert u gebruikersinventaris, gebruik en mailboxstatistieken in één centrale pipeline, ter ondersteuning van licentieoptimalisatie, het afdwingen van access governance en incidentonderzoeken.
Voor deze opzet hebt u het volgende nodig:
- PowerShell 7 of hoger met de modules Microsoft Graph en Exchange Online geïnstalleerd.
- Een Azure-app-registratie met Graph-scopes volgens het least-privilege-principe, zoals Group.Read.All en Reports.Read.All, inclusief toestemming.
- Optioneel Exchange Online-machtigingen voor mailboxstatistieken.
- Veilige opslag van referenties en een centraal uitvoerpad voor CSV en JSON.
Stap 1: gebruikers inventariseren met de Microsoft Graph PowerShell-module
Een volledige gebruikersinventaris vormt de basis voor het monitoren en beheren van Microsoft 365-klanten. Het script hieronder haalt alleen de meest relevante gebruikersgegevens op, wat de looptijd verkort en het proces ook op schaal efficiënt houdt.
Door in alle tenants hetzelfde CSV-exportformaat aan te houden, krijgt elk rapport dezelfde structuur. Daardoor zijn ze eenvoudig te vergelijken, samen te voegen en later te verrijken met gegevens uit bronnen zoals Microsoft Graph Reports of Exchange Online.
Voorbeeld van een PowerShell-script voor gebruikersinventaris
Install-Module Microsoft.Graph -Scope CurrentUserImport-Module Microsoft.GraphConnect-MgGraph -Scopes "User.Read.All","Reports.Read.All"Get-MgUser -All -Property "id,displayName,userPrincipalName,mail,accountEnabled,createdDateTime,assignedLicenses" |Select-Object id,displayName,userPrincipalName,mail,accountEnabled,createdDateTime, @{n='LicenseCount';e={$_.assignedLicenses.Count}} |Export-Csv "C:\Reports\M365_Users.csv" -NoTypeInformation |
U kunt enkele eigenschappen in de regel Get-MGUser -All -Property weglaten om de reikwijdte van uw query te bepalen.
Stap 2: gebruiksstatistieken toevoegen met de Graph Reports API
Graph Reports geeft inzicht in de activiteit van gebruikers binnen diverse Microsoft 365-services. Zo komen slapende accounts en plekken met geconcentreerd gebruik aan het licht, waarmee u bepaalt waar u licenties kunt intrekken of upgraden.
Voorbeeldscripts voor de Graph Reports API in PowerShell
Het volgende script haalt de activiteit per gebruiker op binnen verschillende workloads over een opgegeven periode.
Get-MgReportOffice365ActiveUserDetail -Date (Get-Date).AddDays(-1) -OutFile "C:\Reports\ActiveUserDetail.csv" |
Let op: het script hierboven vraagt de gegevens van gisteren op, aangeduid met .AddDays (-1). U kunt ook kiezen voor voortschrijdende periodes zoals hieronder:
# Last 7 daysGet-MgReportOffice365ActiveUserDetail -Period D7 -OutFile "C:\Reports\ActiveUserDetail_D7.csv"# Last 30 daysGet-MgReportOffice365ActiveUserDetail -Period D30 -OutFile "C:\Reports\ActiveUserDetail_D30.csv" |
Daarna kunt u het gegenereerde CSV-bestand samenvoegen met uw bestaande inventarislijst uit stap 1 om per workload inactieve of weinig actieve accounts te herkennen:
$inv = Import-Csv "C:\Reports\M365_Users.csv" # From step 1$usage = Import-Csv "C:\Reports\ActiveUserDetail.csv" # From step 2$joined = $inv | Join-Object -On userPrincipalName -Right $usage -Kind Left # or use a custom hash join# Alternative without a module: build a hash on UPN for the usage file and add the fields you need$joined | Export-Csv "C:\Reports\M365_Users_Usage.csv" -NoTypeInformation |
Stap 3: de gebruikersinventaris verrijken met mailboxstatistieken uit Exchange Online
Door mailboxstatistieken op te nemen in uw inventarislijst, herkent u te grote of snel groeiende mailboxen voordat ze de productiviteit van klanten raken. Bovendien zorgt dit ervoor dat klantaccounts en -beleidsregels goed worden onderhouden en helpt het beheerders om Exchange Online-mailboxen soepel te migreren.
Voorbeeld van een PowerShell-script om Exchange Online-statistieken op te vragen
Het volgende script verbindt u met de Exchange Online-service van Microsoft 365 en haalt per gebruiker de belangrijkste mailboxstatistieken op. Zo krijgen beheerders inzicht in het mailboxgebruik via kerngegevens als mailboxgrootte, aantal items, verwijderde items, laatste aanmeldingstijd en opslaglimieten.
Connect-ExchangeOnline -UserPrincipalName [email protected]Get-MailboxStatistics -Identity [email protected] |
Voer het script uit voor gebruikers die aan de volgende criteria voldoen:
- Snelle mailboxgroei
- Mailboxen met veel opslag of vlak bij hun quotum
- VIP-, gedeelde of resourcemailboxen
- Migratiekandidaten
- Gebruikers met compliancegevoelige gegevens
Stap 4: Microsoft 365-gebruikersactiviteitsrapporten standaardiseren, exporteren en opslaan
Nadat u statistieken hebt opgehaald met Get-MgUser, Graph Reports en Exchange Online, sluiten die standaard niet op elkaar aan. Normalisatie levert gestandaardiseerde exports op met een consistent gegevensformaat, wat automatisering vereenvoudigt en herhaalbaarheid in alle tenants bevordert.
Aanbevolen actieplan:
- Normaliseer eigenschapsnamen en voeg berekende velden toe, zoals LicenseCount, IsEnabled en AsOf, zodat datasets netjes samenvallen.
- Exporteer CSV-bestanden voor operators en JSON voor dashboards en automatisering.
- Geef elk bestand een naam met de tenant-ID, het tijdvenster en de scriptversie voor een betere controleerbaarheid. Bijvoorbeeld:
- users_{TenantId}_{Window}_{ScriptVersion}.csv
- users_{TenantId}_{Window}_{ScriptVersion}.json
Stap 5: workflows automatiseren met veilige authenticatie en logging
Door standaardisatie en automatisering te combineren, kunt u workflows in alle tenants herhalen. Met veilige aanmeldingen draaien uw scripts soepel, onbeheerd en volgens schema.
Geautomatiseerde retry- en backoff-workflows houden taken stabiel, ook wanneer Microsoft 365 het aantal aanvragen beperkt. Gestructureerde logging laat op zijn beurt zien hoe effectief uw script is, doordat het vastlegt wat er is uitgevoerd en welke statistieken dat opleverde.
Aanbevolen actieplan:
- Gebruik app-only-authenticatie zodat onbeheerde scripts zonder onderbreking kunnen draaien.
- Voeg retry- en back-offconfiguraties toe om het verzamelen stabiel te houden ondanks API-throttling.
- Houd een gedetailleerd uitvoeringslogboek bij, met begin- en eindtijden, filters en aantallen records, zodat alles traceerbaar blijft tijdens audits of reviews.
- Plan frequente inventariscontroles en wekelijkse activiteitsupdates in zodat rapporten actueel blijven zonder onnodige kosten.
- Gebruik als MSP PowerShell-loops om alle klanten langs te gaan en per tenant een apart rapport te genereren.
Stap 6: Microsoft 365-gebruikersrapporten operationeel maken
Nadat u alle benodigde rapportagegegevens hebt verzameld, zet u met operationalisering ruwe statistieken om in bruikbare inzichten. Door exports te koppelen aan compliance, governance en servicereviews, krijgt u zicht op de activiteiten van uw klant.
Zo helpt u klanten om weloverwogen beslissingen te nemen en risico’s te beperken. Bovendien kunt u hen op die manier onderbouwde plannen voorleggen die meetbare serviceverbeteringen opleveren.
Aanbevolen actieplan:
- Voeg gebruikers- en activiteitsextracten toe aan compliancedossiers om aan te tonen dat u nauwkeurige toegangsregistraties bijhoudt en het gegevensgebruik monitort.
- Vergelijk rapporten met meldingen uit HR of de directory om inactieve gebruikers, verouderde toegang of verweesde licenties op te sporen.
- Laat hoogtepunten zien tijdens QBR’s om adoptietrends, gebruiksgroei of risicoreductie zichtbaar te maken.
- Archiveer rapporten om een feitelijke basislijn op te bouwen voor analyse na incidenten en snellere oplossingen.
Het verzamelen van Microsoft 365-gebruikersrapporten automatiseren
Handmatige stappen in verzamelworkflows vertragen de analyse door repetitief werk en verhogen bovendien de operationele kosten. Met automatisering maakt u van gegevensverzameling een consistent, gestandaardiseerd proces waarin menselijke fouten tot een minimum beperkt blijven.
Voorbeelden van aanknopingspunten voor automatisering:
- Maak een nachtelijke scripttaak die gebruikersinventarissen exporteert met de Microsoft Graph PowerShell-module.
- Plan wekelijkse scripts die gegevens over actieve gebruikers verzamelen en een gerichte taak die mailboxstatistieken ophaalt voor gemarkeerde gebruikers.
- Automatiseer het maken van exports met tijdstempel en de daaropvolgende overdracht naar uw bewijsrepository.
NinjaOne-diensten voor het verzamelen van Microsoft 365-gebruikersactiviteitsrapporten
NinjaOne verbetert de manier waarop u gebruikersactiviteitsrapporten van Microsoft Office 365 verzamelt en beheert, met automatisering, beveiliging en schaalbaarheid.
- Scripts op afstand uitrollen: voer Graph Report-, Exchange Online- en Microsoft Graph PowerShell-scripts direct, centraal en op schaal uit via remote scripting van NinjaOne
- Geplande automatiseringen: met de functie voor geplande automatiseringen voert u verzamelscripts uit op vooraf bepaalde momenten, bijvoorbeeld bij het opstarten van het systeem of bij het aanmelden van een gebruiker.
- Beveiligde aangepaste velden: sla gevoelige referenties op in beveiligde aangepaste velden en raadpleeg die informatie centraal via PowerShell-scripts.
- Uitgebreide scriptmogelijkheden: maak aangepaste PowerShell-scripts om onder meer gebruikersinventarissen te automatiseren, inactieve gebruikers per workload te herkennen of kandidaten voor licentieoptimalisatie te genereren.
Daarnaast stroomlijnen de mogelijkheden van NinjaOne voor remote scripting en planning uw PowerShell-workflows, wat centrale en multi-tenant uitrol mogelijk maakt.
Het verzamelen van Microsoft 365-gebruikersrapporten optimaliseren met PowerShell
Nu de modules MSOnline en AzureAD zijn afgeschaft, biedt de overstap naar Microsoft Graph PowerShell een moderne, uniforme aanpak om gegevens te verzamelen uit alle Microsoft 365-services.
Door veilige automatisering, genormaliseerde exports en gestroomlijnde bewijsvoering te combineren, zetten teams ruwe statistieken om in bruikbaar operationeel inzicht dat audits ondersteunt, het licentiegebruik optimaliseert en incidentonderzoeken versnelt.
Gerelateerde onderwerpen:
- Zo gebruikt u de Microsoft Graph API om compliancerapporten op te halen uit meerdere tenants
- Zo automatiseert u meldingen over rolwijzigingen in Microsoft 365 voor beheerderstoezicht
- Zo voert u geplande Graph API-controles uit op verlopen licenties en inactieve gebruikers
- De Microsoft Graph API gebruiken met Windows PowerShell om Microsoft 365-klanten te monitoren en beheren