Punti chiave
- Crea un inventario degli utenti con il modulo Microsoft Graph PowerShell usando Get-MgUser, poi aggiungi le metriche di utilizzo da Graph Reports.
- Arricchisci gli inventari con le metriche delle cassette postali di Exchange Online per individuare cassette postali troppo grandi, account inattivi e candidati alla migrazione.
- Normalizza i nomi delle proprietà e standardizza la denominazione delle esportazioni, così i set di dati si uniscono senza problemi e restano pronti per gli audit su tutti i tenant.
- Automatizza la raccolta con autenticazione app-only, logica di retry e logging strutturato per mantenere sicuri e stabili i flussi di lavoro non presidiati.
I report sulle attività degli utenti di Microsoft 365 (in precedenza Office 365) sono fondamentali per monitorare l’utilizzo dei servizi, garantire la produttività dei clienti e mantenere sicurezza e conformità. PowerShell offre un approccio unificato per raccogliere informazioni utili su Exchange Online, Teams, SharePoint e OneDrive.
Raccogliere i report sulle attività degli utenti Microsoft con PowerShell
Microsoft Graph PowerShell offre dati di qualità elevata e solide capacità di filtro. Con PowerShell puoi combinare inventario degli utenti, utilizzo e metriche delle cassette postali in una pipeline centralizzata, a supporto dell’ottimizzazione delle licenze, dell’applicazione della governance degli accessi e delle indagini sugli incidenti.
Per completare questa configurazione ti servono i seguenti elementi:
- PowerShell 7 o versioni successive con i moduli Microsoft Graph ed Exchange Online installati.
- Una registrazione dell’app in Azure con ambiti Graph con privilegi minimi, come Group.Read.All e Reports.Read.All, e il relativo consenso.
- Autorizzazioni facoltative di Exchange Online per le statistiche delle cassette postali.
- Archiviazione sicura delle credenziali e un percorso di output centralizzato per CSV e JSON.
Passaggio 1: crea l’inventario degli utenti con il modulo Microsoft Graph PowerShell
Un inventario completo degli utenti è la base per monitorare e gestire i client Microsoft 365. Lo script qui sotto raccoglie solo i dettagli utente più rilevanti, riducendo i tempi di esecuzione e mantenendo efficiente il processo anche su larga scala.
Mantenendo un formato di esportazione CSV coerente tra i vari tenant, ogni report segue la stessa struttura. In questo modo è facile confrontarli, unirli e arricchirli in seguito con dati provenienti da fonti come Microsoft Graph Reports o Exchange Online.
Esempio di script PowerShell per l’inventario degli utenti
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 |
Puoi omettere alcune proprietà nella riga Get-MGUser -All -Propertyper definire l’ambito della query.
Passaggio 2: aggiungi le metriche di utilizzo con l’API Graph Reports
Graph Reports fornisce informazioni dettagliate sulle attività degli utenti nei vari servizi Microsoft 365. In questo modo emergono account inattivi e aree con utilizzo concentrato, aiutandoti a capire dove rimuovere il provisioning e dove aggiornare le licenze.
Esempi di script PowerShell per l’API Graph Reports
Lo script seguente recupera l’attività a livello di utente nei diversi carichi di lavoro in un periodo di tempo specificato.
Get-MgReportOffice365ActiveUserDetail -Date (Get-Date).AddDays(-1) -OutFile "C:\Reports\ActiveUserDetail.csv" |
Nota che lo script qui sopra richiede i dati del giorno precedente, indicati da .AddDays (-1). In alternativa puoi usare periodi mobili come quelli riportati di seguito:
# Last 7 daysGet-MgReportOffice365ActiveUserDetail -Period D7 -OutFile "C:\Reports\ActiveUserDetail_D7.csv"# Last 30 daysGet-MgReportOffice365ActiveUserDetail -Period D30 -OutFile "C:\Reports\ActiveUserDetail_D30.csv" |
Successivamente puoi unire il file CSV generato all’elenco di inventario creato nel passaggio 1 per individuare gli account inattivi o poco attivi per carico di lavoro:
$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 |
Passaggio 3: arricchisci l’inventario degli utenti con le metriche delle cassette postali di Exchange Online
Integrare le metriche delle cassette postali nell’elenco di inventario permette di individuare le cassette postali troppo grandi o in rapida crescita prima che influiscano sulla produttività dei clienti. Inoltre garantisce che account e criteri dei clienti siano gestiti correttamente e aiuta gli amministratori a migrare senza intoppi le cassette postali di Exchange Online.
Esempio di script PowerShell per interrogare le metriche di Exchange Online
Lo script seguente ti connette al servizio Exchange Online di Microsoft 365 e recupera le principali metriche della cassetta postale per ogni utente. Aiuta gli amministratori a comprendere l’utilizzo delle cassette postali raccogliendo metriche chiave come dimensione della cassetta postale, numero di elementi, elementi eliminati, data e ora dell’ultimo accesso e limiti di archiviazione.
Connect-ExchangeOnline -UserPrincipalName [email protected]Get-MailboxStatistics -Identity [email protected] |
Esegui lo script per gli utenti che rientrano nei seguenti casi:
- Crescita rapida della cassetta postale
- Cassette postali con molti dati archiviati o vicine alla quota
- Cassette postali VIP, condivise o delle risorse
- Candidati alla migrazione
- Utenti sensibili dal punto di vista della conformità
Passaggio 4: standardizza, esporta e archivia i report sulle attività degli utenti Microsoft 365
Dopo aver raccolto le metriche con Get-MgUser, Graph Reports ed Exchange Online, i dati non risultano allineati tra loro. La normalizzazione produce esportazioni standardizzate, con un formato dati coerente che semplifica l’automazione e rende i processi ripetibili su tutti i tenant.
Piano d’azione consigliato:
- Normalizza i nomi delle proprietà e aggiungi campi calcolati, come LicenseCount, IsEnabled e AsOf, così i set di dati si uniscono senza problemi.
- Esporta i file CSV per gli operatori e i file JSON per dashboard e automazione.
- Assegna a ogni file un nome che includa ID del tenant, intervallo temporale e versione dello script, per una migliore tracciabilità negli audit. Ad esempio:
- users_{TenantId}_{Window}_{ScriptVersion}.csv
- users_{TenantId}_{Window}_{ScriptVersion}.json
Passaggio 5: automatizza i flussi di lavoro con autenticazione e logging sicuri
Unendo standardizzazione e automazione puoi replicare i flussi di lavoro su tutti i tenant. Con accessi sicuri, gli script vengono eseguiti senza intoppi in modalità non presidiata e secondo una pianificazione.
Automatizzare i flussi di retry e backoff garantisce la stabilità dei processi anche quando Microsoft 365 limita le richieste. Il logging strutturato, invece, documenta l’efficacia dello script registrando che cosa è stato eseguito e quali metriche ha prodotto.
Piano d’azione consigliato:
- Usa l’autenticazione app-only per consentire agli script non presidiati di essere eseguiti senza interruzioni.
- Aggiungi configurazioni di retry e back-off per mantenere stabile la raccolta nonostante il throttling delle API.
- Mantieni un log dettagliato delle esecuzioni, con orari di inizio e fine, filtri e numero di record, per garantire la tracciabilità durante audit o revisioni.
- Pianifica controlli frequenti dell’inventario e aggiornamenti settimanali delle attività, così i report restano aggiornati senza costi inutili.
- Se sei un MSP, usa i cicli di PowerShell per eseguire gli script su tutti i clienti e generare report separati per ogni tenant.
Passaggio 6: rendi operativi i report dell’utente di Microsoft 365
Una volta raccolti tutti i dati necessari, rendere operativi i risultati è ciò che trasforma le metriche grezze in informazioni utili. Integrando le esportazioni nelle pratiche di conformità, governance e revisione dei servizi, ottieni visibilità sulle operazioni dei tuoi clienti.
Così puoi aiutarli a prendere decisioni informate e a ridurre i rischi. Inoltre puoi proporre loro piani supportati da dati concreti, che portano a miglioramenti misurabili del servizio.
Piano d’azione consigliato:
- Allega gli estratti su utenti e attività ai pacchetti di conformità per dimostrare che mantieni registri degli accessi accurati e monitori l’utilizzo dei dati.
- Confronta i report con le notifiche delle risorse umane o della directory per rilevare utenti inattivi, accessi obsoleti o licenze orfane.
- Presenta i punti salienti nelle QBR per evidenziare tendenze di adozione, crescita dell’utilizzo o riduzione del rischio.
- Archivia i report per creare una base di riferimento concreta per l’analisi post-incidente e una risoluzione più rapida.
Automatizza la raccolta dei report dell’utente di Microsoft 365
I processi manuali nei flussi di lavoro di raccolta possono rallentare l’analisi a causa delle attività ripetitive e far aumentare i costi operativi. Con l’automazione trasformi la raccolta dei dati in un processo coerente e standardizzato che riduce al minimo l’errore umano.
Esempi di punti in cui applicare l’automazione:
- Crea un processo notturno che esporta gli inventari degli utenti usando il modulo Microsoft Graph PowerShell.
- Pianifica script settimanali che raccolgono i dettagli sugli utenti attivi e un processo mirato che raccoglie le statistiche delle cassette postali per gli utenti segnalati.
- Automatizza la creazione di esportazioni con marca temporale e il loro successivo trasferimento al tuo repository delle evidenze.
I servizi NinjaOne per la raccolta dei report sulle attività degli utenti Microsoft 365
NinjaOne migliora il modo in cui raccogli e gestisci i report sulle attività degli utenti di Microsoft Office 365 grazie ad automazione, sicurezza e scalabilità.
- Distribuzione di script da remoto: esegui subito gli script di Graph Report, Exchange Online e Microsoft Graph PowerShell in modo centralizzato e su larga scala con lo Scripting Remoto di NinjaOne
- Automazioni pianificate: con la caratteristica delle automazioni pianificate puoi eseguire gli script di raccolta a intervalli prestabiliti, ad esempio all’avvio del sistema o all’accesso dell’utente.
- Campi personalizzati sicuri: archivia le credenziali sensibili in campi personalizzati sicuri e accedi alle informazioni archiviate in modo centralizzato tramite script PowerShell.
- Funzionalità di scripting complete: crea script PowerShell personalizzati per automatizzare gli inventari degli utenti, identificare gli utenti inattivi per carico di lavoro o individuare i candidati all’ottimizzazione delle licenze, solo per citarne alcuni.
Inoltre, le funzionalità di scripting remoto e pianificazione di NinjaOne semplificano i flussi di lavoro basati su PowerShell, consentendo distribuzioni centralizzate e multi-tenant.
Ottimizza la raccolta dei report dell’utente di Microsoft 365 con PowerShell
Con la deprecazione dei moduli MSOnline e AzureAD, il passaggio a Microsoft Graph PowerShell ha introdotto un approccio moderno e unificato per raccogliere dati nei diversi servizi Microsoft 365.
Combinando automazione sicura, esportazioni normalizzate e una gestione semplificata delle evidenze, i team trasformano le metriche grezze in visibilità operativa concreta, che supporta gli audit, ottimizza l’uso delle licenze e accelera le indagini sugli incidenti.
Argomenti correlati:
- Come usare l’API Microsoft Graph per estrarre report di conformità da più tenant
- Come automatizzare le notifiche di modifica dei ruoli in Microsoft 365 per il controllo degli amministratori
- Come eseguire controlli pianificati con l’API Graph per licenze scadute e utenti inattivi
- Usare l’API Microsoft Graph con Windows PowerShell per monitorare e gestire i client Microsoft 365
