Il seguente post è stato promosso dal cestino delle bozze a causa di un recente impegno del cliente. Gli amministratori di Exchange sono cresciuti molto abituati agli strumenti UI di tracciamento dei messaggi che sono stati forniti con le precedenti build di Exchange. Questo è completamente comprensibile dal momento che sono tenuti a indagare e risolvere numerosi problemi. Ci si può chiedere se Steve della contabilità ha ricevuto quell’e-mail la settimana scorsa, o perché i messaggi di Anne delle vendite sono bloccati in una coda?
Negli ultimi 10 anni circa lo strumento di tracciamento dei messaggi di Exchange è stato l’arma preferita da molti amministratori per la risoluzione di questi problemi. Tuttavia, questo non esiste in Exchange 2013 o 2016. Invece possiamo usare Delivery Reports o PowerShell per interrogare i log di tracciamento dei messaggi.
Scorri in fondo per un pro tip su come aggiungere una GUI al tracciamento dei messaggi.
Nella forma più semplice, possiamo usare Get-MessageTrackingLog per cercare e restituire tutti i risultati dal server specificato. In qualsiasi organizzazione di grandi dimensioni, scorrere attraverso i banchi di output è una perdita di tempo e non è efficiente. Abbiamo bisogno di applicare una logica di filtraggio.
Ricerca per mittente
Get-MessageTrackingLog -Sender [email protected]
Ricerca per destinatario
Get-MessageTrackingLog -Recipient [email protected]
Ricerca per dominio destinatario
Nota che è anche possibile usare un carattere jolly nella ricerca per includere un intero dominio:
Get-MessageTrackingLog -Recipients *@hotmail.co
In alternativa potremmo usare una dichiarazione where come la seguente, anche se questo sarà tipicamente più lento
Get-MessageTrackingLog | Where {$_.Recipients -like "*tailspintoys.com"}
Ricerca per soggetto
Get-MessageTrackingLog -MessageSubject "I Am Zorg"
Ricerca per MessageID
Get-MessageTrackingLog -MessageId <MessageID>
Ricerca per finestra temporale
Get-MessageTrackingLog -ResultSize Unlimited -Start "3/28/2015 8:00AM" -End "3/28/2015 5:00PM" -EventId "Fail" -Sender "mailto:[email protected]"
Ricerca Per EventID del messaggio
Get-MessageTrackingLog -ResultSize Unlimited -EventId "Fail"
Esempio multiplo – Finestra temporale & EventID & Mittente
I vari elementi possono essere combinati per filtrare i risultati indesiderati.
Get-MessageTrackingLog -ResultSize Unlimited -Start "3/28/2015 8:00AM" -End "3/28/2015 5:00PM" -EventId "Fail" -Sender "[email protected]"
Prendi tutti i messaggi nell’ultima ora
Nota che AddHours è usato con un valore negativo per spostare la finestra di ricerca indietro di un’ora.
Get-MessageTrackingLog -Sender [email protected] -Server (Get-Date).AddHours(-1)
Esporta in CSV
Se sei una cintura nera di Excel, è possibile esportare i risultati della ricerca in un file CSV per una successiva analisi in Excel.
Get-MessageTrackingLog | Export-CSV –path C:\temp\tracking.csv –NoTypeInformation
Get-MessageTrackingLog | select @{Name="RecipientsXX";Expression={$_.Recipients}}
Misura il tempo di esecuzione
Measure-Command {Get-TransportServer | Get-MessageTrackingLog -MessageSubject "zorg" -ResultSize unlimited}
Ricerca GUI per Exchange 2013/2016
Come notato all’inizio di questo post non esiste più uno strumento Message Tracking log Explorer in Exchange 2013 o 2016. Quello che possiamo fare è creare il comando di ricerca desiderato utilizzando uno degli esempi di cui sopra e quindi utilizzare la funzionalità nativa di PowerShell per visualizzare i risultati in una UI.
Questa è la Out-GridView che è stata presente in PowerShell per molti, molti, molti anni.
Come un semplice esempio:
Get-MessageTrackingLog | Out-GridView