/
/

Come eseguire l’audit dei canali di Microsoft Teams con PowerShell

di Team Ninja
How to Audit Microsoft Teams Channels Via 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 completo di team e canali con i cmdlet PowerShell nativi per una visibilità accurata e in tempo reale.
  • Estrai dai log di audit di Microsoft Purview la cronologia di creazione e modifica dei canali come prova di conformità.
  • Analizza l’utilizzo dello spazio di archiviazione tramite l’API Graph per individuare punti critici dei dati e andamenti di crescita.
  • Correla inventario, audit e dati di archiviazione per segnalare i problemi ad alto rischio, come i canali inattivi di grandi dimensioni.
  • Mantieni una pianificazione automatizzata e la conservazione delle prove per dimostrare un monitoraggio continuo della conformità.
  • Rendi operativi i risultati indirizzando i problemi ai flussi di lavoro di risoluzione e generando report di governance.

Una crescita incontrollata di Microsoft Teams può generare lacune di sicurezza e problemi di conformità quando i canali si moltiplicano senza un controllo adeguato. Un audit di Teams sistematico, basato sugli strumenti PowerShell nativi, porta alla luce questi rischi nascosti e allinea l’ambiente di collaborazione ai criteri di conservazione.

Questa guida ti accompagna nella creazione di un processo di audit ripetibile che unisce inventario dei canali, log delle attività e analisi dello spazio di archiviazione per una governance continua.

Come usare PowerShell per l’audit di Microsoft Teams

Gli audit periodici con PowerShell offrono una visibilità essenziale sull’ambiente Teams in termini di sicurezza e gestione.

📌Situazione d’uso: esegui gli audit durante le verifiche di conformità, dopo un incidente di sicurezza, prima di una migrazione o quando devi affrontare la proliferazione dei canali. È particolarmente utile per gli MSP che gestiscono più tenant di clienti diversi.

📌Prerequisiti: prima di procedere, assicurati di disporre di quanto segue:

  • Modulo PowerShell di Microsoft Teams con autorizzazioni di amministratore
  • Accesso ai log di audit di Microsoft Purview
  • PowerShell 7 su Windows 11 e un archivio sicuro per le esportazioni
  • Facoltativo: autorizzazioni Graph per il reporting sullo spazio di archiviazione

Una volta pronti questi elementi, segui i passaggi riportati di seguito.

Passaggio 1: elenca team e canali

Inizia l’audit di Microsoft Teams creando un inventario completo di tutti i team e i canali.

  1. Connettiti a Teams PowerShell ed esporta tutti i team:

Connect-MicrosoftTeams
Get-Team | Select-Object DisplayName, GroupId, Visibility | Export-CSV "C:\TeamsAudit\AllTeams.csv" -NoTypeInformation

    • Questo comando si connette all’ambiente Teams e raccoglie in un file CSV tutti i dettagli essenziali, come nome del team, ID univoco e impostazioni di privacy. Ricordati di sostituire il percorso file di esempio, C:\TeamsAudit\AllTeams.csv, con il tuo
  1. Elenca tutti i canali e classificane le tipologie (ad esempio standard, privato, condiviso):

$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
}

  1. Per i canali privati, rileva i proprietari in modo da individuare gli spazi orfani con Get-TeamChannelUser.

Questo metodo utilizza cmdlet PowerShell nativi per ottenere dati accurati e in tempo reale sull’ambiente Teams. Al termine avrai una base di partenza per l’analisi dello spazio di archiviazione e il monitoraggio delle attività.

Passaggio 2: estrai le attività dei canali dai log di audit di Microsoft Purview

I log di audit forniscono prove fondamentali su chi ha creato, modificato o eliminato i canali di Teams e in quale momento.

  1. Connettiti a Exchange Online e cerca le attività dei canali di Teams:
    1. Installa il modulo, se non è già presente:

Install-Module ExchangeOnlineManagement -Scope CurrentUser -Force

    1. Connettiti a PowerShell di Microsoft Purview (Compliance):

Connect -IPPSSession

    1. Estrai gli eventi di audit dei canali di Teams degli ultimi 30 giorni:

$AuditResults = Search-UnifiedAuditLog '
-StartDate (Get-Date).AddDays (-30) '
-EndDate (Get-Date) '
-RecordType MicrosoftTeams '
-Operations "ChannelCreated","ChannelUpdated","ChannelDeleted" '
-ResultSize 5000

    1. Esporta i risultati per l’analisi:

$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"

  1. Esporta i dati di audit rilevanti per l’analisi:

$AuditResults | Select-Object CreationDate, UserIds, Operations, AuditData | Export-CSV "C:\TeamsAudit\ChannelActivities.csv" -NoTypeInformation

  1. Documenta i parametri di ricerca, l’intervallo temporale e il numero di risultati come prova di conformità.

Questo metodo interroga il log di audit unificato di Microsoft, che registra automaticamente tutti gli eventi del ciclo di vita dei canali nel tenant. Usa questo approccio quando devi indagare su incidenti specifici o dimostrare la conformità ai criteri di governance dei dati.

Dopo l’estrazione avrai un registro con marca temporale di tutte le modifiche ai canali, pronto per essere correlato all’inventario dei team e completare la documentazione della pista di audit.

Passaggio 3: aggiungi il contesto dello spazio di archiviazione con l’API Graph

Capire come viene utilizzato lo spazio di archiviazione completa l’audit di Teams, perché mette in evidenza i punti critici dei dati e gli andamenti di crescita.

  1. Crea una registrazione app in Azure con le autorizzazioni applicative Sites.Read.All.
  2. Connettiti a Microsoft Graph e recupera le metriche di archiviazione:
    • Installa il modulo Microsoft Graph se non è presente:

if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) {
Install-Module Microsoft.Graph -Scope CurrentUser -Force
}

    • Connettiti a Microsoft Graph (solo app, certificato):

Connect-MgGraph -ClientId "your-client-id" -TenantId "your-tenant-id" -CertificateThumbprint "your-cert-thumbprint" | Out-Null

    • Recupera tutti i gruppi di Microsoft 365 abilitati per Teams:

$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"

  1. Esporta i dati di archiviazione dei canali, inclusi gli URL di SharePoint e le metriche di utilizzo, per individuare crescite rapide o conflitti con i criteri di conservazione.

Questo metodo interroga lo spazio di archiviazione SharePoint sottostante che alimenta ogni canale di Teams, fornendo dati dimensionali accurati anche quando un canale viene rinominato. Usa questo approccio quando devi analizzare i costi di archiviazione, pianificare migrazioni o individuare archivi.

Unire le metriche di archiviazione agli eventi di audit crea un sistema di prioritizzazione efficace per i canali da rivedere e completa il flusso di lavoro di reporting sui canali di Teams.

Passaggio 4: correla i dati e segnala i problemi

Correlare i risultati dell’audit trasforma i dati grezzi in indicazioni concrete per la gestione dei canali di Teams.

  1. Unisci inventario, eventi di audit e dati di archiviazione usando l’ID del team e i nomi dei canali come chiavi primarie.
  2. Segnala le condizioni ad alto rischio con i filtri di PowerShell:
    1. Individua i canali inattivi che occupano molto spazio:

$InactiveLargeChannels = $ChannelData | Where-Object {
$_.LastActivity -lt (Get-Date).AddDays(-90) -and $_.StorageUsed -gt 1GB
}

      • Questo script individua i canali rimasti inattivi negli ultimi 90 giorni che occupano comunque più di 1 GB di spazio.
    1. Individua i canali con attività di creazione/eliminazione frequenti:

$VolatileChannels = $AuditResults | Group-Object ChannelId | Where-Object Count -gt 10

      • Questo codice raggruppa gli eventi di audit per canale e segnala i canali con più di 10 eventi registrati, evidenziando quelli che subiscono modifiche insolitamente frequenti.
  1. Assegna un responsabile della risoluzione e una data di scadenza per ogni problema segnalato.

Questa correlazione incrocia più fonti di dati per far emergere schemi che un’analisi a una sola dimensione non rileverebbe. Usa questo approccio quando ti prepari a un audit di conformità o quando introduci una governance proattiva.

Al termine della correlazione avrai un elenco di problemi dei canali ordinato per priorità e con responsabilità chiare, così da poter procedere a una risoluzione sistematica e mantenere nel tempo la conformità dell’audit di Microsoft Teams.

Passaggio 5: esporta, pianifica e conserva le prove

Una documentazione adeguata trasforma l’audit da controllo una tantum a strategia di conformità continua.

  1. Esporta report standardizzati che includano contesto del tenant, data dell’audit e risultati:

$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

    • Questo codice crea un riepilogo dell’audit su una sola riga (nome del tenant, data dell’audit, numero di team, numero di canali e numero di problemi segnalati) e lo salva nel file C:\TeamsAudit\AuditSummary_YYYYMMDD.csv.
  1. Mantieni log di esecuzione che tracciano tempi di esecuzione, numero di record ed errori.
  2. Pianifica esecuzioni automatizzate con l’Utilità di pianificazione di Windows o con il tuo strumento RMM:
    • Scansioni settimanali dell’inventario
    • Estrazioni di audit complete su base mensile
    • Conservazione minima di 12 mesi per tutti gli artefatti

Questo approccio sistematico produce prove datate e versionate che dimostrano un monitoraggio continuo della conformità. Usa questo metodo quando ti prepari ad audit normativi o quando implementi una governance di lungo periodo.

Una volta implementato, disporrai di una pista di audit verificabile che soddisfa i requisiti di conformità e fornisce dati storici per l’analisi degli andamenti e la pianificazione delle capacità.

Passaggio 6: agisci sui risultati dell’audit

Trasformare i risultati dell’audit in flussi di lavoro concreti fa sì che la gestione dei canali di Microsoft Teams porti un valore reale al business.

  1. Indirizza gli elementi segnalati ai team competenti:
    • Proliferazione dei canali > flusso di lavoro di pulizia
    • Lacune nella conservazione > team di revisione delle policy
    • Canali inattivi di grandi dimensioni > processo di archiviazione
  2. Crea un processo di apertura ticket per i canali senza proprietario, individuando i problemi critici.
  3. Documenta risoluzioni ed eccezioni nei report di governance mensili destinati alla direzione.

Questa fase operativa integra i risultati dell’audit nei flussi di lavoro IT esistenti, garantendo che i problemi vengano assegnati e monitorati e non semplicemente rilevati. Usa questo approccio quando imposti una governance continuativa o quando devi dimostrare la conformità agli stakeholder.

Una volta implementato, chiuderai il ciclo dell’audit con risoluzioni documentate, trasformando i dati grezzi in miglioramenti misurabili nella gestione dell’ambiente Teams.

Rendi operativo l’audit di Microsoft Teams con l’automazione di NinjaOne

NinjaOne trasforma il tuo flusso di lavoro di audit in PowerShell in una soluzione automatizzata e pronta per contesti enterprise.

  1. Distribuisci e pianifica gli script di audit tramite la libreria di automazione di NinjaOne.
  2. Conserva le credenziali in modo sicuro con la gestione delle credenziali di NinjaOne per l’accesso degli account di servizio.
  3. Configura attivatori automatici di ticket per:
    • Canali senza proprietario che richiedono un’assegnazione
    • Canali inattivi di grandi dimensioni da archiviare
    • Modifiche frequenti alla configurazione che indicano instabilità

Questa integrazione sfrutta la capacità di NinjaOne di inviare script agli endpoint e di archiviare le credenziali in modo sicuro, eliminando gli interventi manuali e mantenendo integra la pista di audit. Usa questo approccio quando gestisci Teams su più clienti o quando serve un reporting di livello dirigenziale.

Guida rapida

NinjaOne può eseguire l’audit dei canali di Microsoft Teams tramite PowerShell. Ecco come:

  1. Installa i moduli necessari:

Assicurati di avere installato i moduli PowerShell MicrosoftTeams e ExchangeOnlineManagement.

  1. Connettiti a Microsoft 365:

powershell

Connect-MicrosoftTeams

  1. Recupera i log di audit:

Usa il cmdlet Search-UnifiedAuditLog per recuperare i record di audit relativi alle attività dei canali di Teams:

powershell
$auditRecords = Search-UnifiedAuditLog -StartDate "2023-01-01" -EndDate "2023-12-31" -Activity "ChannelCreated"

  1. Filtra ed esporta i dati:

Filtra i risultati per ottenere i dettagli sulle creazioni dei canali ed esportali in un file 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

Conformità continua grazie all’automazione dell’audit di Microsoft Teams

Un audit completo di Teams unisce inventario dei canali, log delle attività di Purview e analitiche sull’archiviazione per trasformare una proliferazione caotica in una collaborazione governata.

Automatizzando questo processo con PowerShell e pianificando esecuzioni periodiche, mantieni una visibilità continua che affronta in modo proattivo rischi di sicurezza e requisiti di conformità.

Questo approccio rigoroso mantiene l’ambiente Teams ottimizzato nel lungo periodo sia per la produttività sia per la governance.

Argomenti correlati:

FAQs

Per audit ricorrenti o automatizzati, usa l’autenticazione basata su certificato con una registrazione app in Microsoft Entra ID anziché gli accessi interattivi. In questo modo puoi stabilire connessioni sicure e non interattive a Microsoft Teams, Exchange Online e Microsoft Graph senza inserire nomi utente o password negli script.

Quando un canale viene rinominato, il nome della cartella SharePoint sottostante resta invariato: per questo il reporting dello spazio di archiviazione tramite l’API Graph è essenziale per associare correttamente i nomi attuali dei canali alle rispettive posizioni di archiviazione.

Per monitorare i guest in Teams, controlla nel log di audit unificato le operazioni relative all’appartenenza (come MemberAdded e MemberRemoved) e filtra esplicitamente gli eventi in cui l’utente coinvolto è un account guest o esterno. In questo modo ottieni visibilità sulle modifiche agli accessi guest e sulla potenziale esposizione a rischi di sicurezza.

Per gestire ambienti Teams di grandi dimensioni che superano il limite di 5.000 record, usa una sessione di ricerca con Search-UnifiedAuditLog specificando un SessionId e -SessionCommand ReturnLargeSet. Questo ti permette di recuperare i risultati in più batch tramite query ripetute, senza perdere record né raggiungere il limite sulla dimensione dei risultati.

Gli artefatti di audit esportati (CSV/JSON) vanno conservati in base a un criterio di conservazione definito (ad esempio 12 mesi o più), indipendentemente dalla conservazione dei log di audit di Microsoft Purview, che può variare in base alla licenza e alla configurazione.

Sì: usa i cmdlet Get-CsTeamsMeetingPolicy e Get-CsTeamsCallingPolicy per verificare impostazioni delle riunioni, policy di registrazione e funzionalità di chiamata in tutta l’organizzazione.

Ti potrebbe interessare anche

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