Rastreando e-mails no Exchange Online com Powershell

Olá a todos!

Nesse post vou explicar como rastrear e-mails enviados e recebidos no Exchange Online utilizando o Powershell.

Para isso vamos utilizar o cmdlet Get-MessageTrace.

Alguns pontos a serem observados:

  • O Get-MessageTrace irá retornar dados dos últimos 10 dias
  • Se utilizarmos os parâmetros para retornar dados acima de 10 dias, será retornado um erro 
  • Dados acima de 10 dias, devemos utilizar o Start-HistoricalSearch e o Get-HistoricalSearch (assunto para outro post)
  • Se não passarmos nenhum parâmetro, dados das ultimas 48 horas serão retornados

Vamos aos exemplos:

Obtendo todos os e-mails enviados e recebidos em um determinado período:

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022


 



Especificando um Sender:

Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 -SenderAddress breno@uptocloud.com



 

 

Especificando um Sender e um Recipient:

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 -SenderAddress breno@uptocloud.com -RecipientAddress test@abcde.com.br




 

Para filtrar pelo status da entrega, adicione o parâmetro -Status <opções>
Opções: Failed, Pending, Delivered, Expanded, Quarantined, FilteredAsSpam

Filtrando por palavras específicas:

No exemplo abaixo filtramos:

- por um determinado período
- o endereço do sender contém a palavra 'dba'
- o subject contém a palavra 'Alerta'

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 |  Where {$_.SenderAddress -like '*dba*' -and $_.Subject -like '*Alerta*'}




Exportando o resultado

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 |  Where {$_.SenderAddress -like '*dba*' -and $_.Subject -like '*Alerta*'} |  Export-Csv -NoTypeInformation  -Path c:\temp\file.csv

 

Por hoje é tudo.

Breno Padovan