/
/

Come ottenere i report sulle attività degli utenti di Microsoft 365 con PowerShell

di Team Ninja
How to Get Microsoft 365 User Activity Reports using PowerShell blog banner image

Riepilogo

Questo post del blog NinjaOne offre un elenco completo di comandi CMD di base e un’analisi approfondita dei comandi di Windows con oltre 70 comandi cmd essenziali sia per i principianti che per gli utenti avanzati. La guida si propone si piegare in modo pratico i comandi del prompt dei comandi per la gestione dei file, la navigazione nelle directory, la risoluzione dei problemi di rete, le operazioni su disco e l’automazione, con esempi reali per migliorare la produttività. Che tu voglia imparare i comandi cmd fondamentali o padroneggiare gli strumenti avanzati della CLI di Windows, questa guida ti aiuterà a utilizzare il Prompt dei comandi in modo più efficace.

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 CurrentUser
Import-Module Microsoft.Graph
Connect-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 days
Get-MgReportOffice365ActiveUserDetail -Period D7 -OutFile "C:\Reports\ActiveUserDetail_D7.csv"# Last 30 days
Get-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:

  1. Normalizza i nomi delle proprietà e aggiungi campi calcolati, come LicenseCount, IsEnabled e AsOf, così i set di dati si uniscono senza problemi.
  2. Esporta i file CSV per gli operatori e i file JSON per dashboard e automazione.
  3. 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:

  1. Usa l’autenticazione app-only per consentire agli script non presidiati di essere eseguiti senza interruzioni.
  2. Aggiungi configurazioni di retry e back-off per mantenere stabile la raccolta nonostante il throttling delle API.
  3. 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.
  4. Pianifica controlli frequenti dell’inventario e aggiornamenti settimanali delle attività, così i report restano aggiornati senza costi inutili.
  5. 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:

  1. 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.
  2. Confronta i report con le notifiche delle risorse umane o della directory per rilevare utenti inattivi, accessi obsoleti o licenze orfane.
  3. Presenta i punti salienti nelle QBR per evidenziare tendenze di adozione, crescita dell’utilizzo o riduzione del rischio.
  4. 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:

FAQs

Get-MailboxStatistics restituisce dimensione della cassetta postale, numero di elementi, elementi eliminati, data e ora dell’ultimo accesso e limiti di archiviazione per ogni utente. Queste metriche ti aiutano a individuare la crescita rapida delle cassette postali, gli account vicini alla quota e i candidati alla migrazione prima che diventino un problema.

Assegna a ogni esportazione un nome che includa ID del tenant, intervallo temporale e versione dello script. Ad esempio: users_{TenantId}_{Window}_{ScriptVersion}.csv. In questo modo i file restano tracciabili e verificabili quando gestisci report per molti clienti.

Allega gli estratti su utenti e attività ai pacchetti di conformità per documentare i registri degli accessi ed evidenziare nelle QBR le tendenze di adozione o la riduzione del rischio. Archiviare questi report crea anche una base di riferimento concreta per l’analisi post-incidente.

Per raccogliere i report dell’utente di Microsoft 365, l’app di Azure AD o l’account amministratore deve avere autorizzazioni Graph come Reports.Read.All, User.Read.All e Directory.Read.All. Per le metriche delle cassette postali possono servire anche ruoli di Exchange Online come View-Only Recipients o Mailbox Search.

Microsoft 365 applica il throttling alle richieste API sotto carico elevato e uno script senza logica di retry può interrompersi a metà esecuzione. Aggiungere configurazioni di back-off mantiene stabili i processi di raccolta anche quando le richieste vengono limitate.

Ti potrebbe interessare anche

Pronto a semplificare le parti più complesse dell'IT?