/
/

Como obter relatórios de atividade de usuários do Microsoft 365 com PowerShell

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

Resumo instantâneo

Esta postagem do blog NinjaOne oferece uma lista abrangente de comandos CMD básicos e um mergulho profundo nos comandos do Windows, com +70 comandos CMD essenciais para usuários iniciantes e avançados. Explicamos sobre comandos práticos de prompt de comando para gerenciamento de arquivos, navegação em diretórios, solução de problemas de rede, operações de disco e automação, tudo com exemplos reais para maximizar a produtividade. Seja para aprender comandos básicos CMD ou dominar ferramentas avançadas de CLI do Windows, este guia ajuda você a usar o prompt de comando com mais eficiência.

Pontos principais

  • Monte um inventário de usuários com o módulo Microsoft Graph PowerShell usando Get-MgUser e depois acrescente métricas de uso do Graph Reports.
  • Enriqueça o inventário com métricas de caixas de correio do Exchange Online para sinalizar caixas grandes demais, contas inativas e candidatos à migração.
  • Padronize os nomes das propriedades e a nomenclatura das exportações para que os conjuntos de dados se combinem sem ruído e fiquem prontos para auditoria em todos os tenants.
  • Automatize a coleta com autenticação somente de aplicativo, lógica de nova tentativa e logs estruturados para manter os fluxos não assistidos seguros e estáveis.

Os relatórios de atividade de usuários do Microsoft 365 (antigo Office 365) são essenciais para acompanhar o uso dos serviços, garantir a produtividade dos clientes e manter a segurança e a conformidade. Usar o PowerShell cria uma abordagem única para reunir insights práticos em Exchange Online, Teams, SharePoint e OneDrive.

Como coletar relatórios de atividade de usuários da Microsoft com PowerShell

O Microsoft Graph PowerShell entrega dados de alta qualidade e filtros poderosos. Com PowerShell, dá para combinar inventário de usuários, uso e métricas de caixas de correio em um pipeline centralizado que apoia a otimização de licenças, a governança de acessos e as investigações de incidentes.

Para montar esse cenário, você precisa do seguinte:

  • PowerShell 7 ou superior, com os módulos do Microsoft Graph e do Exchange Online instalados.
  • Registro de aplicativo no Azure com escopos do Graph de privilégio mínimo, como Group.Read.All e Reports.Read.All, além do consentimento.
  • Permissões opcionais no Exchange Online para estatísticas de caixas de correio.
  • Armazenamento seguro de credenciais e um caminho de saída central para CSV e JSON.

Etapa 1: inventariar usuários com o módulo Microsoft Graph PowerShell

Um inventário completo de usuários é a base para monitorar e gerenciar clientes do Microsoft 365. O script abaixo captura apenas os detalhes mais relevantes de cada usuário, o que reduz o tempo de execução e mantém o processo eficiente em escala.

Ao manter o mesmo formato de exportação CSV em todos os tenants, cada relatório segue a mesma estrutura. Assim fica fácil comparar, mesclar e enriquecer os dados depois com fontes como o Microsoft Graph Reports ou o Exchange Online.

Exemplo de script PowerShell para inventário de usuários

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

Você pode omitir algumas propriedades da linha Get-MGUser -All -Propertypara controlar o escopo da consulta.

Etapa 2: acrescentar métricas de uso com a API do Graph Reports

O Graph Reports mostra detalhes da atividade dos usuários nos diversos serviços do Microsoft 365. Isso revela contas ociosas e áreas de uso concentrado, ajudando a decidir onde desprovisionar e onde fazer upgrade de licenças.

Exemplos de scripts PowerShell para a API do Graph Reports

O script a seguir recupera a atividade por usuário em diferentes cargas de trabalho dentro de um período definido.

Get-MgReportOffice365ActiveUserDetail -Date (Get-Date).AddDays(-1) -OutFile "C:\Reports\ActiveUserDetail.csv"

Repare que o script acima solicita os dados de ontem, indicados por .AddDays (-1). Como alternativa, dá para usar períodos móveis como estes:

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

Depois, combine o CSV gerado com a lista de inventário da etapa 1 para identificar contas inativas ou pouco ativas por carga de trabalho:

$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

Etapa 3: enriquecer o inventário com métricas de caixas de correio do Exchange Online

Incluir métricas de caixas de correio no inventário revela caixas grandes demais ou em crescimento acelerado antes que elas atrapalhem a produtividade do cliente. Além disso, garante a manutenção correta das contas e políticas dos clientes e ajuda os administradores a migrar caixas de correio do Exchange Online sem sobressaltos.

Exemplo de script PowerShell para consultar métricas do Exchange Online

O script a seguir conecta você ao serviço Exchange Online do Microsoft 365 e recupera as principais métricas de caixa de correio por usuário. Isso ajuda os administradores a entender o uso das caixas, trazendo dados como tamanho da caixa, número de itens, itens excluídos, horário do último logon e limites de armazenamento.

Connect-ExchangeOnline -UserPrincipalName [email protected]
Get-MailboxStatistics -Identity [email protected]

Execute o script para usuários que atendam a estes critérios:

  • Crescimento acelerado da caixa de correio
  • Caixas com muito armazenamento ou perto da cota
  • Caixas VIP, compartilhadas ou de recursos
  • Candidatos à migração
  • Usuários sensíveis do ponto de vista de conformidade

Etapa 4: padronizar, exportar e armazenar os relatórios de atividade de usuários do Microsoft 365

Depois de extrair métricas com Get-MgUser, Graph Reports e Exchange Online, elas não se encaixam automaticamente. A normalização gera exportações padronizadas, com um formato de dados consistente que simplifica a automação e permite repetir o processo em vários tenants.

Plano de ação recomendado:

  1. Padronize os nomes das propriedades e acrescente campos calculados, como LicenseCount, IsEnabled e AsOf, para que os conjuntos de dados se combinem sem ruído.
  2. Exporte em CSV para os operadores e em JSON para painéis e automações.
  3. Nomeie cada arquivo com o ID do tenant, a janela de tempo e a versão do script para facilitar auditorias. Por exemplo:
    • users_{TenantId}_{Window}_{ScriptVersion}.csv
    • users_{TenantId}_{Window}_{ScriptVersion}.json

Etapa 5: automatizar fluxos com autenticação segura e logs

Padronização somada a automação permite replicar os mesmos fluxos em vários tenants. Com logins seguros, os scripts rodam sem supervisão e no horário programado.

Automatizar nova tentativa e recuo mantém os jobs estáveis mesmo quando o Microsoft 365 limita as requisições. Já os logs estruturados comprovam a eficácia do script, registrando o que foi executado e quais métricas foram geradas.

Plano de ação recomendado:

  1. Use autenticação somente de aplicativo para que os scripts não assistidos rodem sem interrupções.
  2. Configure nova tentativa e recuo para preservar a estabilidade da coleta diante da limitação de API.
  3. Mantenha um log detalhado das execuções, com horários de início e término, filtros e contagem de registros, para garantir rastreabilidade em auditorias ou revisões.
  4. Programe verificações frequentes de inventário e atualizações semanais de atividade para manter os relatórios atuais sem custos desnecessários.
  5. Se você é MSP, use loops do PowerShell para percorrer os clientes e gerar relatórios separados por tenant.

Etapa 6: colocar os relatórios de usuários do Microsoft 365 em operação

Depois de reunir todos os dados, operacionalizar as descobertas é o que transforma métricas brutas em insights acionáveis. Integrando as exportações às práticas de conformidade, governança e revisão de serviços, você ganha visibilidade sobre a operação do cliente.

Isso ajuda os clientes a tomar decisões embasadas e a reduzir riscos. Também permite entregar planos sustentados por evidências, com melhorias de serviço mensuráveis.

Plano de ação recomendado:

  1. Anexe os extratos de usuários e atividades aos pacotes de conformidade para comprovar que os registros de acesso estão corretos e que o uso de dados é monitorado.
  2. Cruze os relatórios com avisos do RH ou do diretório para detectar usuários inativos, acessos obsoletos ou licenças órfãs.
  3. Mostre os destaques nas QBRs para evidenciar tendências de adoção, crescimento de uso ou redução de risco.
  4. Arquive os relatórios para criar uma base factual que acelere a análise pós-incidente e a resolução.

Automatize a coleta dos relatórios de usuários do Microsoft 365

Processos manuais na coleta atrasam a análise por causa da repetição e ainda elevam o custo operacional. Com automação, a coleta de dados vira um processo consistente e padronizado, com menos erro humano.

Exemplos de pontos de automação:

  • Crie um job noturno que exporte os inventários de usuários com o módulo Microsoft Graph PowerShell.
  • Programe scripts semanais que coletem detalhes dos usuários ativos e um job direcionado que reúna estatísticas das caixas de correio dos usuários sinalizados.
  • Automatize a geração de exportações com carimbo de data/hora e o envio delas para o repositório de evidências.

Recursos do NinjaOne para coletar relatórios de atividade de usuários do Microsoft 365

NinjaOne melhora a forma de coletar e gerenciar relatórios de atividade de usuários do Microsoft Office 365 com automação, segurança e escalabilidade.

  • Implantação remota de scripts: execute na hora scripts do Graph Report, do Exchange Online e do Microsoft Graph PowerShell de forma centralizada e em escala com o script remoto do NinjaOne
  • Automações agendadas: use o recurso de automações agendadas para rodar os scripts de coleta em intervalos predefinidos, como na inicialização do sistema ou no login do usuário.
  • Campos personalizados seguros: guarde credenciais sensíveis em campos personalizados seguros e acesse essas informações de forma centralizada por scripts PowerShell.
  • Recursos completos de scripts: crie scripts PowerShell personalizados para automatizar inventários de usuários, identificar usuários inativos por carga de trabalho ou apontar candidatos à otimização de licenças, entre outras possibilidades.

Os recursos de script remoto e agendamento do NinjaOne ainda simplificam os fluxos baseados em PowerShell, viabilizando implantações centralizadas e multi-tenant.

Otimize a coleta de relatórios de usuários do Microsoft 365 com PowerShell

Com a descontinuação dos módulos MSOnline e AzureAD, a migração para o Microsoft Graph PowerShell trouxe uma abordagem moderna e unificada para coletar dados nos serviços do Microsoft 365.

Ao unir automação segura, exportações normalizadas e pacotes de evidências bem organizados, as equipes transformam métricas brutas em visibilidade operacional acionável, que sustenta auditorias, otimiza o uso de licenças e acelera investigações de incidentes.

Temas relacionados:

FAQs

Get-MailboxStatistics retorna, por usuário, o tamanho da caixa de correio, a contagem de itens, os itens excluídos, o horário do último logon e os limites de armazenamento. Essas métricas ajudam a sinalizar crescimento acelerado, contas perto da cota e candidatos à migração antes que virem problema.

Nomeie cada exportação com o ID do tenant, a janela de tempo e a versão do script. Por exemplo: users_{TenantId}_{Window}_{ScriptVersion}.csv. Assim os arquivos continuam rastreáveis e auditáveis quando você gerencia relatórios de muitos clientes.

Anexe os extratos de usuários e atividades aos pacotes de conformidade para documentar os registros de acesso e mostre nas QBRs as tendências de adoção ou a redução de risco. Arquivar esses relatórios também cria uma base factual para a análise pós-incidente.

Para coletar relatórios de usuários do Microsoft 365, o aplicativo no Azure AD ou a conta de administrador precisa de permissões do Graph, como Reports.Read.All, User.Read.All e Directory.Read.All. Para métricas de caixa de correio, também podem ser necessárias funções do Exchange Online, como View-Only Recipients ou Mailbox Search.

O Microsoft 365 limita as requisições de API sob carga pesada, e um script sem lógica de nova tentativa pode falhar no meio da execução. Com configurações de recuo, os jobs de coleta seguem estáveis mesmo quando as requisições são limitadas.

Recomendados para você

Pronto para simplificar as partes mais difíceis da TI?