Pontos principais
- Monte um inventário completo de equipes e canais com cmdlets nativos do PowerShell e tenha visibilidade precisa em tempo real.
- Extraia o histórico de criação e alteração de canais dos logs de auditoria do Microsoft Purview como evidência de conformidade.
- Analise o uso de armazenamento pela Graph API para identificar concentrações de dados e padrões de crescimento.
- Cruze inventário, auditoria e armazenamento para sinalizar riscos altos, como canais grandes e inativos.
- Mantenha o agendamento automático e a retenção das evidências para comprovar o monitoramento contínuo de conformidade.
- Coloque os achados em prática encaminhando problemas a fluxos de correção e gerando relatórios de governança.
O crescimento descontrolado do Microsoft Teams pode gerar falhas de segurança e problemas de conformidade quando os canais se multiplicam sem supervisão adequada. Uma auditoria do Teams feita de forma sistemática com as ferramentas nativas do PowerShell revela esses riscos ocultos e alinha o ambiente de colaboração às políticas de retenção.
Este guia mostra como montar um processo de auditoria repetível, que combina inventário de canais, logs de atividade e análise de armazenamento para uma governança contínua.
Dispare fluxos automáticos de correção assim que riscos de configuração forem sinalizados.
Como auditar o Microsoft Teams com o PowerShell
Auditorias periódicas via PowerShell garantem a visibilidade essencial do ambiente do Teams para segurança e gerenciamento.
📌Caso de uso: faça auditorias em revisões de conformidade, após incidentes de segurança, antes de migrações ou ao lidar com a proliferação de canais. É especialmente útil para MSPs que gerenciam vários tenants de clientes.
📌Pré-requisitos: antes de começar, verifique se atende aos seguintes requisitos:
- módulo PowerShell do Microsoft Teams com permissões de administrador
- acesso aos logs de auditoria do Microsoft Purview
- PowerShell 7 no Windows 11 e armazenamento seguro para as exportações
- Opcional: permissões do Graph para relatórios de armazenamento
Com tudo pronto, siga as etapas abaixo.
Etapa 1: liste as equipes e os canais
Comece a auditoria do Microsoft Teams montando um inventário completo de todas as equipes e canais.
- Conecte-se ao Teams PowerShell e exporte todas as equipes:
Connect-MicrosoftTeamsGet-Team | Select-Object DisplayName, GroupId, Visibility | Export-CSV "C:\TeamsAudit\AllTeams.csv" -NoTypeInformation
- Esse comando se conecta ao ambiente do Teams e extrai para um arquivo CSV todos os detalhes essenciais, como nome da equipe, ID exclusivo e configurações de privacidade. Lembre-se de substituir o caminho de arquivo de exemplo, C:\TeamsAudit\AllTeams.csv, pelo seu
- Liste todos os canais e classifique os tipos (por exemplo, padrão, privado, compartilhado):
$AllTeams = Get-Teamforeach ($Team in $AllTeams) {Get-TeamChannel -GroupId $Team.GroupId | Select-Object TeamName, DisplayName, MembershipType, Description | Export-CSV "C:\TeamsAudit\AllChannels.csv" -Append -NoTypeInformation}
- Nos canais privados, registre os proprietários para identificar canais órfãos com Get-TeamChannelUser.
Esse método usa cmdlets nativos do PowerShell para obter dados precisos e em tempo real do ambiente do Teams. Ao final, você terá a base para a análise de armazenamento e o acompanhamento de atividades.
Etapa 2: extraia as atividades dos canais dos logs de auditoria do Microsoft Purview
Os logs de auditoria mostram quem criou, alterou ou excluiu canais do Teams e quando isso aconteceu.
- Conecte-se ao Exchange Online e pesquise as atividades dos canais do Teams:
- Instale o módulo, caso ainda não esteja instalado:
Install-Module ExchangeOnlineManagement -Scope CurrentUser -Force
- Conecte-se ao PowerShell do Microsoft Purview (Conformidade):
Connect-IPPSSession
- Extraia os eventos de auditoria dos canais do Teams dos últimos 30 dias:
$StartDate = (Get-Date).AddDays(-30)
$EndDate = Get-Date
$AuditResults = Search-UnifiedAuditLog `
-StartDate $StartDate `
-EndDate $EndDate `
-RecordType MicrosoftTeams `
-Operations ChannelCreated,ChannelUpdated,ChannelDeleted `
-ResultSize 5000
- Exporte os resultados para análise:
$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"
- Exporte os dados de auditoria relevantes para análise:
$AuditResults | Select-Object CreationDate, UserIds, Operations, AuditData | Export-CSV "C:\TeamsAudit\ChannelActivities.csv" -NoTypeInformation
- Documente os parâmetros de pesquisa, o intervalo de tempo e a quantidade de resultados como evidência de conformidade.
Esse método consulta o log de auditoria unificado da Microsoft, que registra automaticamente todos os eventos do ciclo de vida dos canais no tenant. Use essa abordagem para investigar incidentes específicos ou comprovar conformidade com políticas de governança de dados.
Após a extração, você terá um registro com data e hora de todas as alterações nos canais, pronto para ser cruzado com o inventário de equipes e formar uma trilha de auditoria completa.
Etapa 3: acrescente o contexto de armazenamento com a Graph API
Entender o uso de armazenamento completa a auditoria do Teams ao revelar concentrações de dados e padrões de crescimento.
- Crie um registro de aplicativo no Microsoft Entra ID, adicione a permissão de aplicativo Microsoft Graph Sites.Read.All e conceda o consentimento do administrador.
- Conecte-se ao Microsoft Graph e colete as métricas de armazenamento:
- Instale o módulo do Microsoft Graph , se ainda não estiver presente:
if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) {Install-Module Microsoft.Graph -Scope CurrentUser -Force}
- Conecte-se ao Microsoft Graph (somente aplicativo, certificado):
Connect-MgGraph -ClientId "your-client-id" -TenantId "your-tenant-id" -CertificateThumbprint "your-cert-thumbprint" | Out-Null
- Obtenha todos os grupos do Microsoft 365 com Teams habilitado:
$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.DisplayNameSiteUrl = $site?.WebUrlTotalBytes = $drive?.Quota?.TotalUsedBytes = $drive?.Quota?.UsedUsedPercent = $usedPercentState = $drive?.Quota?.State})}catch {$results.Add([PSCustomObject]@{TeamName = $team.DisplayNameSiteUrl = $nullTotalBytes = $nullUsedBytes = $nullUsedPercent = $nullState = "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 UTF8Write-Host "Storage metrics export complete: $csvPath"
- Exporte os dados de armazenamento dos canais, incluindo URLs do SharePoint e métricas de uso, para identificar crescimento acelerado ou conflitos de retenção.
Esse método consulta o armazenamento do SharePoint que sustenta cada canal do Teams, trazendo dados de tamanho precisos mesmo quando um canal é renomeado. Use essa abordagem ao investigar custos de armazenamento, planejar migrações ou identificar arquivos mortos.
Cruzar as métricas de armazenamento com os eventos de auditoria cria um sistema de priorização eficiente para escolher o que revisar e conclui o fluxo completo de relatórios dos canais do Teams.
Etapa 4: cruze os dados e sinalize problemas
Cruzar os resultados da auditoria transforma dados brutos em insights acionáveis para o gerenciamento dos canais do Teams.
- Combine o inventário, os eventos de auditoria e os dados de armazenamento usando o ID da equipe e os nomes dos canais como chaves primárias.
- Sinalize condições de alto risco com filtros do PowerShell:
- Encontre canais inativos com muito armazenamento:
$InactiveLargeChannels = $ChannelData | Where-Object {$_.LastActivity -lt (Get-Date).AddDays(-90) -and $_.StorageUsed -gt 1GB}
- Esse script identifica canais inativos nos últimos 90 dias que ainda consomem mais de 1 GB de armazenamento.
- Identifique canais com criação e exclusão frequentes:
$VolatileChannels = $AuditResults | Group-Object ChannelId | Where-Object Count -gt 10
- Esse código agrupa os eventos de auditoria por canal e sinaliza os que têm mais de 10 eventos registrados, destacando canais com alterações excepcionalmente frequentes.
- Defina responsáveis pela correção e prazos para cada problema sinalizado.
Esse cruzamento compara várias fontes de dados e revela padrões que uma análise unidimensional deixaria passar. Use essa abordagem ao preparar auditorias de conformidade ou implementar uma governança proativa.
Depois do cruzamento, você terá uma lista priorizada de problemas nos canais com responsáveis definidos, o que permite corrigir tudo de forma sistemática e manter a conformidade nas auditorias do Microsoft Teams.
Etapa 5: exporte, agende e guarde as evidências
Uma boa documentação transforma a auditoria de uma verificação pontual em uma estratégia contínua de conformidade.
- Exporte relatórios padronizados com o contexto do tenant, a data da auditoria e os achados:
$ExportData = [PSCustomObject]@{Tenant = "Contoso"AuditDate = Get-Date -Format "yyyy-MM-dd"TeamsCount = $AllTeams.CountChannelsCount = $AllChannels.CountIssuesFlagged = $FlaggedIssues.Count}$ExportData | Export-CSV "C:\TeamsAudit\AuditSummary_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
- Esse código cria um resumo de auditoria em uma linha (nome do tenant, data da auditoria, número de equipes, número de canais e número de problemas sinalizados) e o grava no arquivo C:\TeamsAudit\AuditSummary_YYYYMMDD.csv.
- Mantenha logs de execução com tempo de processamento, contagem de registros e erros.
- Agende execuções automáticas pelo Agendador de Tarefas do Windows ou pela sua ferramenta de RMM:
- varreduras semanais de inventário
- extrações mensais de auditoria completa
- retenção mínima de 12 meses para todos os artefatos
Essa abordagem sistemática gera evidências datadas e versionadas que comprovam o monitoramento contínuo de conformidade. Use esse método ao preparar auditorias regulatórias ou implementar uma governança de longo prazo.
Depois da implementação, você terá uma trilha de auditoria verificável, que atende aos requisitos de conformidade e ainda fornece dados históricos para análise de tendências e planejamento de capacidade.
Etapa 6: aja com base nos resultados da auditoria
Transformar os achados da auditoria em fluxos de trabalho acionáveis garante que o gerenciamento dos canais do Microsoft Teams traga valor real ao negócio.
- Encaminhe os itens sinalizados às equipes certas:
- proliferação de canais > fluxo de limpeza
- falhas de retenção > equipe de revisão de políticas
- canais grandes e inativos > processo de arquivamento
- Crie um processo de abertura de tickets para canais sem proprietário, identificando os problemas críticos.
- Documente resoluções e exceções em relatórios mensais de governança para a liderança revisar.
Essa fase operacional integra os achados da auditoria aos fluxos de TI já existentes, garantindo que os problemas sejam atribuídos e acompanhados, e não apenas identificados. Use essa abordagem ao estabelecer uma governança contínua ou demonstrar conformidade às partes interessadas.
Depois da implementação, você fecha o ciclo da auditoria com resoluções documentadas, convertendo dados brutos em melhorias mensuráveis no gerenciamento do ambiente do Teams.
Descubra como o NinjaOne RMM centraliza o agendamento de scripts e o monitoramento de endpoints em vários tenants.
Coloque em prática com NinjaOne e automatize as auditorias do MS Teams
NinjaOne transforma seu fluxo de auditoria em PowerShell em uma solução automatizada e pronta para o ambiente corporativo.
- Implante e agende os scripts de auditoria pela biblioteca de automação do NinjaOne.
- Armazene credenciais com segurança usando o gerenciamento de credenciais do NinjaOne para o acesso de contas de serviço.
- Configure gatilhos automáticos de tickets para:
- canais sem proprietário que precisam de atribuição
- canais grandes e inativos que precisam ser arquivados
- alterações frequentes de configuração que indicam instabilidade
Essa integração usa a capacidade do NinjaOne de enviar scripts aos endpoints e de armazenar credenciais com segurança, eliminando o trabalho manual sem comprometer a integridade da trilha de auditoria. Use essa abordagem ao escalar o gerenciamento do Teams em vários clientes ou quando precisar de relatórios para a diretoria.
Guia de início rápido
NinjaOne pode auditar os canais do Microsoft Teams via PowerShell. Veja como:
- Instale os módulos necessários:
verifique se os módulos PowerShell MicrosoftTeams e ExchangeOnlineManagement estão instalados.
- Conecte-se ao Microsoft 365:
powershell
Connect-MicrosoftTeams
- Exporte as equipes e os canais
Execute o script PowerShell abaixo para exportar os detalhes de equipes e canais para arquivos CSV.
```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"
```
O script exporta nomes de equipes, IDs e configurações de visibilidade para `AllTeams.csv`. Já os nomes dos canais, as equipes e os IDs associados, os tipos de associação e as descrições vão para `AllChannels.csv`.
Conformidade contínua com a automação da auditoria do Microsoft Teams
Uma auditoria completa do Teams combina inventário de canais, logs de atividade do Purview e análise de armazenamento para transformar a proliferação caótica em colaboração gerenciada.
Ao automatizar esse processo com o PowerShell e agendar execuções periódicas, você mantém visibilidade contínua e trata riscos de segurança e requisitos de conformidade de forma proativa.
Essa disciplina mantém o ambiente do Teams otimizado tanto para a produtividade quanto para a governança no longo prazo.
Tópicos relacionados:
