El siguiente post fue promovido desde la papelera de borradores debido a un reciente compromiso con un cliente. Los administradores de Exchange se han acostumbrado a las herramientas de la interfaz de usuario de seguimiento de mensajes que se han enviado con las versiones anteriores de Exchange. Esto es completamente comprensible, ya que tienen que investigar y resolver numerosos problemas. Puede que se pregunte si Steve, de contabilidad, recibió ese correo electrónico la semana pasada, o por qué los mensajes de Anne, de ventas, están atascados en una cola… Durante los últimos 10 años, la herramienta de seguimiento de mensajes de Exchange ha sido el arma elegida por muchos administradores para solucionar estos problemas. Sin embargo, esto no existe en Exchange 2013 o 2016. En su lugar, podemos utilizar Delivery Reports o PowerShell para consultar los registros de seguimiento de mensajes.
Desplácese hasta el final para ver un consejo profesional sobre la adición de una interfaz gráfica de usuario de nuevo al seguimiento de mensajes.
En la forma más simple, podemos utilizar Get-MessageTrackingLog para buscar y devolver todos los éxitos del servidor especificado. En cualquier organización grande, desplazarse a través de las pantallas de salida es una pérdida de tiempo y no es eficiente. Necesitamos aplicar alguna lógica de filtrado.
Búsqueda por remitente
Get-MessageTrackingLog -Sender [email protected]
Búsqueda por destinatario
Get-MessageTrackingLog -Recipient [email protected]
Búsqueda por dominio del destinatario
Nótese que también es posible utilizar un comodín en la búsqueda para incluir un dominio completo:
Get-MessageTrackingLog -Recipients *@hotmail.co
Alternativamente podríamos utilizar una sentencia where como la siguiente, aunque esto suele ser más lento
Get-MessageTrackingLog | Where {$_.Recipients -like "*tailspintoys.com"}
Búsqueda por asunto
Get-MessageTrackingLog -MessageSubject "I Am Zorg"
Búsqueda por MessageID
Get-MessageTrackingLog -MessageId <MessageID>
Búsqueda por ventana de tiempo
Get-MessageTrackingLog -ResultSize Unlimited -Start "3/28/2015 8:00AM" -End "3/28/2015 5:00PM" -EventId "Fail" -Sender "mailto:[email protected]"
Búsqueda Por Mensaje EventID
Get-MessageTrackingLog -ResultSize Unlimited -EventId "Fail"
Ejemplo múltiple – Ventana de tiempo & EventID & Remitente
Los distintos elementos pueden combinarse para filtrar resultados no deseados.
Get-MessageTrackingLog -ResultSize Unlimited -Start "3/28/2015 8:00AM" -End "3/28/2015 5:00PM" -EventId "Fail" -Sender "[email protected]"
Obtener todos los mensajes de la última hora
Nótese que AddHours se utiliza con un valor negativo para retroceder la ventana de búsqueda una hora.
Get-MessageTrackingLog -Sender [email protected] -Server (Get-Date).AddHours(-1)
Exportar a CSV
Si se es cinturón negro de Excel, es posible exportar los resultados de la búsqueda a un archivo CSV para su posterior análisis en Excel.
Get-MessageTrackingLog | Export-CSV –path C:\temp\tracking.csv –NoTypeInformation
Get-MessageTrackingLog | select @{Name="RecipientsXX";Expression={$_.Recipients}}
Medir el tiempo de ejecución
Measure-Command {Get-TransportServer | Get-MessageTrackingLog -MessageSubject "zorg" -ResultSize unlimited}
Guía de búsqueda para Exchange 2013/2016
Como se ha indicado al principio de este post ya no existe una herramienta de exploración de registros de seguimiento de mensajes en Exchange 2013 o 2016. Lo que podemos hacer es elaborar el comando de búsqueda deseado utilizando uno de los ejemplos anteriores y luego utilizar la funcionalidad nativa de PowerShell para mostrar los resultados en una UI.
Este es el Out-GridView que ha estado presente en PowerShell durante muchos, muchos, muchos años.
Como un simple ejemplo:
Get-MessageTrackingLog | Out-GridView