Para este procedimiento solo se debe abrir como administrador
de Windows el entorno de Scripting de Powershell (“Powershell ISE”) y ejecutar lo
siguiente:
Nota: El procedo exporta los últimos 10 días (máximo permitido) con la información en bloques hacia archivos
CSV con el prefijo "SMTPlog" ubicados en la raiz del disco (C:\) , y cada archivo exportado contiene un tope de 5000 registros.
$PrefijoArchivoCSV
=
"C:\temp\SMTPlog"
Import-Module ExchangeOnlineManagement
$EsTenantPropio = read-host -Prompt "Por
Favor indique si es administrador de un tenant propio (S), o si es
administrador delegado (guest) en un tenant externo (N)"
if ($EsTenantPropio.ToUpper()
-eq
'S')
{
Connect-ExchangeOnline
}
else {
# Si tenemos un usuario EXTERNO a un dominio (usuario guest)
que tiene permiso de administrador (permiso delegado) dentro de dicho tenant
externo
$administradorExterno = read-host -Prompt "Indique
el usuario administrador (administradorexterno@dominioexterno.com) "
$tenantExterno = read-host -Prompt "Indique
el tenant en el cual es usuario externo y es administrador
(tenantconpermisodelegado.onmicrosoft.com) "
Connect-ExchangeOnline
-UserPrincipalName
$administradorExterno
-DelegatedOrganization
$tenantExterno
}
Write-Host "Conectado..."
Write-Host "Obteniendo
listado de direcciones de correo..."
#Collect all recipients from Office
365
$Recipients =
Get-Recipient
-ResultSize
Unlimited
|
select
PrimarySMTPAddress
$MailTraffic =
@{}
foreach($Recipient
in
$Recipients)
{
$MailTraffic[$Recipient.PrimarySMTPAddress.ToLower()] =
@{}
}
$Recipients =
$null
#Collect Message Tracking Logs (These
are broken into "pages" in Office 365 so we need to collect them all
with a loop)
$Messages = $null
$Page = 1
do
{
Write-Host "Recolectando Flujo de mensajes - Pagina $Page..."
$CurrMessages
=
Get-MessageTrace
-StartDate
(Get-Date).AddDays(-10)
-EndDate
(Get-Date) -PageSize 5000 -Page $Page|
Select
Received,*Address,*IP,Subject,Status,Size
if ($CurrMessages -ne $null)
{
$CurrMessages |
Export-Csv
"$($OutputFile)$($Page).csv"
-NoTypeInformation
}
$Page++
$Messages +=
$CurrMessages
}
until ($CurrMessages
-eq
$null)
Write-Host "Desconectando...
por favor acepte la validación para finalizar..."