{"id":922818,"date":"2026-11-06T14:51:39","date_gmt":"2026-11-06T14:51:39","guid":{"rendered":"https:\/\/www.ninjaone.com\/blog\/relatorios-de-usuarios-microsoft-365-powershell\/"},"modified":"2026-11-06T14:51:40","modified_gmt":"2026-11-06T14:51:40","slug":"relatorios-de-usuarios-microsoft-365-powershell","status":"publish","type":"post","link":"https:\/\/www.ninjaone.com\/pt-br\/blog\/relatorios-de-usuarios-microsoft-365-powershell\/","title":{"rendered":"Como obter relat\u00f3rios de atividade de usu\u00e1rios do Microsoft 365 com PowerShell"},"content":{"rendered":"<div class=\"in-context-cta\"><h2>Pontos principais<\/h2>\n<ul>\n<li>Monte um invent\u00e1rio de usu\u00e1rios com o m\u00f3dulo Microsoft Graph PowerShell usando Get-MgUser e depois acrescente m\u00e9tricas de uso do Graph Reports.<\/li>\n<li>Enrique\u00e7a o invent\u00e1rio com m\u00e9tricas de caixas de correio do Exchange Online para sinalizar caixas grandes demais, contas inativas e candidatos \u00e0 migra\u00e7\u00e3o.<\/li>\n<li>Padronize os nomes das propriedades e a nomenclatura das exporta\u00e7\u00f5es para que os conjuntos de dados se combinem sem ru\u00eddo e fiquem prontos para auditoria em todos os tenants.<\/li>\n<li>Automatize a coleta com autentica\u00e7\u00e3o somente de aplicativo, l\u00f3gica de nova tentativa e logs estruturados para manter os fluxos n\u00e3o assistidos seguros e est\u00e1veis.<\/li>\n<\/ul>\n<\/div>\n<p>Os <strong>relat\u00f3rios de atividade de usu\u00e1rios <\/strong>do Microsoft 365 (antigo Office 365) s\u00e3o essenciais para acompanhar o uso dos servi\u00e7os, garantir a produtividade dos clientes e manter a seguran\u00e7a e a conformidade. Usar o <a href=\"https:\/\/www.ninjaone.com\/it-hub\/gerenciamento-de-endpoints\/what-is-powershell\/\">PowerShell<\/a> cria uma abordagem \u00fanica para reunir insights pr\u00e1ticos em Exchange Online, Teams, SharePoint e OneDrive.<\/p>\n<h2>Como coletar relat\u00f3rios de atividade de usu\u00e1rios da Microsoft com PowerShell<\/h2>\n<p>O Microsoft Graph PowerShell entrega dados de alta qualidade e filtros poderosos. Com PowerShell, d\u00e1 para combinar invent\u00e1rio de usu\u00e1rios, uso e m\u00e9tricas de caixas de correio em um pipeline centralizado que apoia a otimiza\u00e7\u00e3o de licen\u00e7as, a governan\u00e7a de acessos e as investiga\u00e7\u00f5es de incidentes.<\/p>\n<p>Para montar esse cen\u00e1rio, voc\u00ea precisa do seguinte:<\/p>\n<ul>\n<li>PowerShell 7 ou superior, com os m\u00f3dulos do Microsoft Graph e do Exchange Online instalados.<\/li>\n<li>Registro de aplicativo no Azure com escopos do Graph de privil\u00e9gio m\u00ednimo, como Group.Read.All e Reports.Read.All, al\u00e9m do consentimento.<\/li>\n<li>Permiss\u00f5es opcionais no Exchange Online para estat\u00edsticas de caixas de correio.<\/li>\n<li>Armazenamento seguro de credenciais e um caminho de sa\u00edda central para CSV e JSON.<\/li>\n<\/ul>\n<h3 id=\"step-1\">Etapa 1: inventariar usu\u00e1rios com o m\u00f3dulo Microsoft Graph PowerShell<\/h3>\n<p>Um invent\u00e1rio completo de usu\u00e1rios \u00e9 a base para <a href=\"https:\/\/www.ninjaone.com\/pt-br\/blog\/microsoft-graph-api-powershell\/\">monitorar e gerenciar clientes do Microsoft 365<\/a>. O script abaixo captura apenas os detalhes mais relevantes de cada usu\u00e1rio, o que reduz o tempo de execu\u00e7\u00e3o e mant\u00e9m o processo eficiente em escala.<\/p>\n<p>Ao manter o mesmo formato de exporta\u00e7\u00e3o CSV em todos os tenants, cada relat\u00f3rio segue a mesma estrutura. Assim fica f\u00e1cil comparar, mesclar e enriquecer os dados depois com fontes como o Microsoft Graph Reports ou o Exchange Online.<\/p>\n<h4>Exemplo de script PowerShell para invent\u00e1rio de usu\u00e1rios<\/h4>\n<table>\n<tbody>\n<tr>\n<td><code>Install-Module Microsoft.Graph -Scope CurrentUser<\/code><br \/>\n<code>Import-Module Microsoft.Graph<\/code><br \/>\n<code>Connect-MgGraph -Scopes \"User.Read.All\",\"Reports.Read.All\"<\/code><code>Get-MgUser -All -Property \"id,displayName,userPrincipalName,mail,accountEnabled,createdDateTime,assignedLicenses\" |<\/code><br \/>\n<code>Select-Object id,displayName,userPrincipalName,mail,accountEnabled,createdDateTime, @{n='LicenseCount';e={$_.assignedLicenses.Count}} |<\/code><br \/>\n<code>Export-Csv \"C:\\Reports\\M365_Users.csv\" -NoTypeInformation<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Voc\u00ea pode omitir algumas propriedades da linha <strong><code>Get-MGUser -All -Property <\/code><\/strong>para controlar o escopo da consulta.<\/p>\n<h3>Etapa 2: acrescentar m\u00e9tricas de uso com a API do Graph Reports<\/h3>\n<p>O Graph Reports mostra detalhes da atividade dos usu\u00e1rios nos diversos servi\u00e7os do Microsoft 365. Isso revela contas ociosas e \u00e1reas de uso concentrado, ajudando a decidir onde desprovisionar e onde fazer upgrade de licen\u00e7as.<\/p>\n<h4>Exemplos de scripts PowerShell para a API do Graph Reports<\/h4>\n<p>O script a seguir recupera a atividade por usu\u00e1rio em diferentes cargas de trabalho dentro de um per\u00edodo definido.<\/p>\n<table>\n<tbody>\n<tr>\n<td><code>Get-MgReportOffice365ActiveUserDetail -Date (Get-Date).AddDays(-1) -OutFile \"C:\\Reports\\ActiveUserDetail.csv\"<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Repare que o script acima solicita os dados de ontem, indicados por <strong><code>.AddDays (-1)<\/code><\/strong>. Como alternativa, d\u00e1 para usar per\u00edodos m\u00f3veis como estes:<\/p>\n<table>\n<tbody>\n<tr>\n<td><code># Last 7 days<\/code><br \/>\n<code>Get-MgReportOffice365ActiveUserDetail -Period D7 -OutFile \"C:\\Reports\\ActiveUserDetail_D7.csv\"<\/code><code># Last 30 days<\/code><br \/>\n<code>Get-MgReportOffice365ActiveUserDetail -Period D30 -OutFile \"C:\\Reports\\ActiveUserDetail_D30.csv\"<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Depois, combine o CSV gerado com a <a href=\"#step-1\">lista de invent\u00e1rio da etapa 1<\/a> para identificar contas inativas ou pouco ativas por carga de trabalho:<\/p>\n<table>\n<tbody>\n<tr>\n<td><code>$inv = Import-Csv \"C:\\Reports\\M365_Users.csv\" # From step 1<\/code><br \/>\n<code>$usage = Import-Csv \"C:\\Reports\\ActiveUserDetail.csv\" # From step 2<\/code><code>$joined = $inv | Join-Object -On userPrincipalName -Right $usage -Kind Left # or use a custom hash join<\/code><br \/>\n<code># Alternative without a module: build a hash on UPN for the usage file and add the fields you need<\/code><code>$joined | Export-Csv \"C:\\Reports\\M365_Users_Usage.csv\" -NoTypeInformation<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Etapa 3: enriquecer o invent\u00e1rio com m\u00e9tricas de caixas de correio do Exchange Online<\/h3>\n<p>Incluir m\u00e9tricas de caixas de correio no invent\u00e1rio revela caixas grandes demais ou em crescimento acelerado antes que elas atrapalhem a produtividade do cliente. Al\u00e9m disso, garante a manuten\u00e7\u00e3o correta das contas e pol\u00edticas dos clientes e ajuda os administradores a <a href=\"https:\/\/www.ninjaone.com\/pt-br\/blog\/migrar-caixas-correio-exchange-online-sem-downtime\/\">migrar caixas de correio do Exchange Online sem sobressaltos<\/a>.<\/p>\n<h4>Exemplo de script PowerShell para consultar m\u00e9tricas do Exchange Online<\/h4>\n<p>O script a seguir conecta voc\u00ea ao servi\u00e7o Exchange Online do Microsoft 365 e recupera as principais m\u00e9tricas de caixa de correio por usu\u00e1rio. Isso ajuda os administradores a entender o uso das caixas, trazendo dados como tamanho da caixa, n\u00famero de itens, itens exclu\u00eddos, hor\u00e1rio do \u00faltimo logon e limites de armazenamento.<\/p>\n<table>\n<tbody>\n<tr>\n<td><code>Connect-ExchangeOnline -UserPrincipalName admin@sampledomain.com<\/code><br \/>\n<code>Get-MailboxStatistics -Identity johndoe@sampledomain.com<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Execute o script para usu\u00e1rios que atendam a estes crit\u00e9rios:<\/p>\n<ul>\n<li>Crescimento acelerado da caixa de correio<\/li>\n<li>Caixas com muito armazenamento ou perto da cota<\/li>\n<li>Caixas VIP, compartilhadas ou de recursos<\/li>\n<li>Candidatos \u00e0 migra\u00e7\u00e3o<\/li>\n<li>Usu\u00e1rios sens\u00edveis do ponto de vista de conformidade<\/li>\n<\/ul>\n<h3>Etapa 4: padronizar, exportar e armazenar os relat\u00f3rios de atividade de usu\u00e1rios do Microsoft 365<\/h3>\n<p>Depois de extrair m\u00e9tricas com <strong>Get-MgUser<\/strong>, <strong>Graph Reports<\/strong> e <strong>Exchange Online<\/strong>, elas n\u00e3o se encaixam automaticamente. A normaliza\u00e7\u00e3o gera exporta\u00e7\u00f5es padronizadas, com um formato de dados consistente que simplifica a automa\u00e7\u00e3o e permite repetir o processo em v\u00e1rios tenants.<\/p>\n<p>Plano de a\u00e7\u00e3o recomendado:<\/p>\n<ol>\n<li>Padronize os nomes das propriedades e acrescente campos calculados, como <strong>LicenseCount<\/strong>, <strong>IsEnabled<\/strong> e <strong>AsOf<\/strong>, para que os conjuntos de dados se combinem sem ru\u00eddo.<\/li>\n<li>Exporte em CSV para os operadores e em JSON para pain\u00e9is e automa\u00e7\u00f5es.<\/li>\n<li>Nomeie cada arquivo com o ID do tenant, a janela de tempo e a vers\u00e3o do script para facilitar auditorias. Por exemplo:\n<ul>\n<li>users_{TenantId}_{Window}_{ScriptVersion}.csv<\/li>\n<li>users_{TenantId}_{Window}_{ScriptVersion}.json<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Etapa 5: automatizar fluxos com autentica\u00e7\u00e3o segura e logs<\/h3>\n<p>Padroniza\u00e7\u00e3o somada a automa\u00e7\u00e3o permite replicar os mesmos fluxos em v\u00e1rios tenants. Com logins seguros, os scripts rodam sem supervis\u00e3o e no hor\u00e1rio programado.<\/p>\n<p>Automatizar nova tentativa e recuo mant\u00e9m os jobs est\u00e1veis mesmo quando o Microsoft 365 limita as requisi\u00e7\u00f5es. J\u00e1 os logs estruturados comprovam a efic\u00e1cia do script, registrando o que foi executado e quais m\u00e9tricas foram geradas.<\/p>\n<p>Plano de a\u00e7\u00e3o recomendado:<\/p>\n<ol>\n<li>Use autentica\u00e7\u00e3o somente de aplicativo para que os scripts n\u00e3o assistidos rodem sem interrup\u00e7\u00f5es.<\/li>\n<li>Configure nova tentativa e recuo para preservar a estabilidade da coleta diante da <a href=\"https:\/\/www.tibco.com\/glossary\/what-is-api-throttling\" target=\"_blank\" rel=\"noopener\">limita\u00e7\u00e3o de API<\/a>.<\/li>\n<li>Mantenha um log detalhado das execu\u00e7\u00f5es, com hor\u00e1rios de in\u00edcio e t\u00e9rmino, filtros e contagem de registros, para garantir rastreabilidade em auditorias ou revis\u00f5es.<\/li>\n<li>Programe verifica\u00e7\u00f5es frequentes de invent\u00e1rio e atualiza\u00e7\u00f5es semanais de atividade para manter os relat\u00f3rios atuais sem custos desnecess\u00e1rios.<\/li>\n<li>Se voc\u00ea \u00e9 MSP, use <a href=\"https:\/\/www.ninjaone.com\/pt-br\/blog\/loop-no-powershell\/\">loops do PowerShell<\/a> para percorrer os clientes e gerar relat\u00f3rios separados por tenant.<\/li>\n<\/ol>\n<h3>Etapa 6: colocar os relat\u00f3rios de usu\u00e1rios do Microsoft 365 em opera\u00e7\u00e3o<\/h3>\n<p>Depois de reunir todos os dados, operacionalizar as descobertas \u00e9 o que transforma m\u00e9tricas brutas em insights acion\u00e1veis. Integrando as exporta\u00e7\u00f5es \u00e0s pr\u00e1ticas de conformidade, governan\u00e7a e revis\u00e3o de servi\u00e7os, voc\u00ea ganha visibilidade sobre a opera\u00e7\u00e3o do cliente.<\/p>\n<p>Isso ajuda os clientes a tomar decis\u00f5es embasadas e a reduzir riscos. Tamb\u00e9m permite entregar planos sustentados por evid\u00eancias, com melhorias de servi\u00e7o mensur\u00e1veis.<\/p>\n<p>Plano de a\u00e7\u00e3o recomendado:<\/p>\n<ol>\n<li>Anexe os extratos de usu\u00e1rios e atividades aos pacotes de conformidade para comprovar que os registros de acesso est\u00e3o corretos e que o uso de dados \u00e9 monitorado.<\/li>\n<li>Cruze os relat\u00f3rios com avisos do RH ou do diret\u00f3rio para detectar usu\u00e1rios inativos, acessos obsoletos ou licen\u00e7as \u00f3rf\u00e3s.<\/li>\n<li>Mostre os destaques nas QBRs para evidenciar tend\u00eancias de ado\u00e7\u00e3o, crescimento de uso ou redu\u00e7\u00e3o de risco.<\/li>\n<li>Arquive os relat\u00f3rios para criar uma base factual que acelere a an\u00e1lise p\u00f3s-incidente e a resolu\u00e7\u00e3o.<\/li>\n<\/ol>\n<h2>Automatize a coleta dos relat\u00f3rios de usu\u00e1rios do Microsoft 365<\/h2>\n<p>Processos manuais na coleta atrasam a an\u00e1lise por causa da repeti\u00e7\u00e3o e ainda elevam o custo operacional. Com automa\u00e7\u00e3o, a coleta de dados vira um processo consistente e padronizado, com menos erro humano.<\/p>\n<p>Exemplos de pontos de automa\u00e7\u00e3o:<\/p>\n<ul>\n<li>Crie um job noturno que exporte os invent\u00e1rios de usu\u00e1rios com o m\u00f3dulo Microsoft Graph PowerShell.<\/li>\n<li>Programe scripts semanais que coletem detalhes dos usu\u00e1rios ativos e um job direcionado que re\u00fana estat\u00edsticas das caixas de correio dos usu\u00e1rios sinalizados.<\/li>\n<li>Automatize a gera\u00e7\u00e3o de exporta\u00e7\u00f5es com carimbo de data\/hora e o envio delas para o reposit\u00f3rio de evid\u00eancias.<\/li>\n<\/ul>\n<h2>Recursos do NinjaOne para coletar relat\u00f3rios de atividade de usu\u00e1rios do Microsoft 365<\/h2>\n<p>NinjaOne melhora a forma de coletar e gerenciar relat\u00f3rios de atividade de usu\u00e1rios do Microsoft Office 365 com automa\u00e7\u00e3o, seguran\u00e7a e escalabilidade.<\/p>\n<ul>\n<li><strong>Implanta\u00e7\u00e3o remota de scripts: <\/strong>execute na hora scripts do Graph Report, do Exchange Online e do Microsoft Graph PowerShell de forma centralizada e em escala com o <a href=\"https:\/\/www.ninjaone.com\/rmm\/remote-scripting\/\">script remoto<\/a> do NinjaOne<\/li>\n<li><strong>Automa\u00e7\u00f5es agendadas<\/strong>: use o recurso de automa\u00e7\u00f5es agendadas para rodar os scripts de coleta em intervalos predefinidos, como na inicializa\u00e7\u00e3o do sistema ou no login do usu\u00e1rio.<\/li>\n<li><strong>Campos personalizados seguros<\/strong>: guarde credenciais sens\u00edveis em campos personalizados seguros e acesse essas informa\u00e7\u00f5es de forma centralizada por scripts PowerShell.<\/li>\n<li><strong>Recursos completos de scripts<\/strong>: crie scripts PowerShell personalizados para automatizar invent\u00e1rios de usu\u00e1rios, identificar usu\u00e1rios inativos por carga de trabalho ou apontar candidatos \u00e0 otimiza\u00e7\u00e3o de licen\u00e7as, entre outras possibilidades.<\/li>\n<\/ul>\n<p>Os recursos de script remoto e agendamento do NinjaOne ainda simplificam os fluxos baseados em PowerShell, viabilizando implanta\u00e7\u00f5es centralizadas e multi-tenant.<\/p>\n<h2>Otimize a coleta de relat\u00f3rios de usu\u00e1rios do Microsoft 365 com PowerShell<\/h2>\n<p>Com a descontinua\u00e7\u00e3o dos m\u00f3dulos MSOnline e AzureAD, a migra\u00e7\u00e3o para o Microsoft Graph PowerShell trouxe uma abordagem moderna e unificada para coletar dados nos servi\u00e7os do Microsoft 365.<\/p>\n<p>Ao unir automa\u00e7\u00e3o segura, exporta\u00e7\u00f5es normalizadas e pacotes de evid\u00eancias bem organizados, as equipes transformam m\u00e9tricas brutas em <a href=\"https:\/\/www.ninjaone.com\/pt-br\/blog\/melhores-praticas-de-visibilidade-de-ponto-final\/\">visibilidade<\/a> operacional acion\u00e1vel, que sustenta auditorias, otimiza o uso de licen\u00e7as e acelera investiga\u00e7\u00f5es de incidentes.<\/p>\n<p><strong>Temas relacionados:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/www.ninjaone.com\/pt-br\/blog\/relatorios-conformidade-multi-tenant-graph-api\/\">Como usar a API do Microsoft Graph para extrair relat\u00f3rios de conformidade em v\u00e1rios tenants<\/a><\/li>\n<li><a href=\"https:\/\/www.ninjaone.com\/pt-br\/blog\/notificacoes-mudanca-funcao-microsoft-365\/\">Como automatizar notifica\u00e7\u00f5es de mudan\u00e7a de fun\u00e7\u00e3o no Microsoft 365 para supervis\u00e3o de administradores<\/a><\/li>\n<li><a href=\"https:\/\/www.ninjaone.com\/pt-br\/blog\/verificacoes-agendadas-graph-api-licencas-expiradas\/\">Como executar verifica\u00e7\u00f5es agendadas na API do Graph para licen\u00e7as expiradas e usu\u00e1rios inativos<\/a><\/li>\n<li><a href=\"https:\/\/www.ninjaone.com\/pt-br\/blog\/microsoft-graph-api-powershell\/\">Como usar a API do Microsoft Graph com o Windows PowerShell para monitorar e gerenciar clientes do Microsoft 365<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Os relat\u00f3rios de atividade de usu\u00e1rios do Microsoft 365 (antigo Office 365) s\u00e3o essenciais para acompanhar o uso dos servi\u00e7os, garantir a produtividade dos clientes e manter a seguran\u00e7a e a conformidade. Usar o PowerShell cria uma abordagem \u00fanica para reunir insights pr\u00e1ticos em Exchange Online, Teams, SharePoint e OneDrive. Como coletar relat\u00f3rios de atividade [&hellip;]<\/p>\n","protected":false},"author":35,"featured_media":743455,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[12373],"tags":[],"class_list":["post-922818","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-ops-pt-br"],"acf":[],"modified_by":null,"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/posts\/922818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/comments?post=922818"}],"version-history":[{"count":1,"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/posts\/922818\/revisions"}],"predecessor-version":[{"id":922819,"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/posts\/922818\/revisions\/922819"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/media\/743455"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/media?parent=922818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/categories?post=922818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ninjaone.com\/pt-br\/wp-json\/wp\/v2\/tags?post=922818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}