Отслеживание сообщений в Exchange 2010

При миграции с Exchange 2003 сразу бросается в глаза отсутствие единого GUI интерфейса, который позволяет отследить сообщение на всех серверах организации (как это было в Exchange 2003). В связи с изменением формата логов Message tracking для отслеживания сообщений в организации exchange 2010 нужно использовать EMC, в Exchange 2003 – System Manager. Но даже при этом GUI интерфейс Exchange 2010 не позволяет получить логи со всех серверов, которые участвовали в маршрутизации данного сообщения.

В Exchange 2010 можно использовать следующие средства для отслеживания сообщений с максимальной детализацией:

Командлет Get- MessageTrackingLog. Ниже пример команды, которой можно посмотреть логи message tracking на всех серверах с ролями hub и mailbox в организации (ключевым моментом является получение всех серверов в организации и фильтрация их по ролям). 

Пример: 

Get-ExchangeServer | where {$_.isHubTransportServer -eq $true -or $_.isMailboxServer -eq $true} | Get-MessageTrackingLog -sender "iivanov@net.org" | Select-Object Timestamp,ServerHostname,ClientHostname,Source,EventId,Recipients | Sort-Object -Property Timestamp

Подробная информация по данному командлету есть здесь  https://technet.microsoft.com/en-us/library/bb124926(EXCHG.80).aspx

Так же можно использовать командлетSearch-MessageTrackingReport и Get-MessageTrackingReport (аналог delivery reports в Exchange control Panel).

Пример:
Search-MessageTrackingReport -Identity "iivanov" -Sender "apetrov@mynet.org" -ByPassDelegateChecking -DoNotResolve | ForEach-Object { Get-MessageTrackingReport -Identity $_.MessageTrackingReportID -DetailLevel Verbose -BypassDelegateChecking -DoNotResolve -RecipientPathFilter "apetrov@mynet.org" -ReportTemplate RecipientPath }

При этом, командлет Search-MessageTrackingReport возвращает несколько результатов , которые попадают под критерии поиска. Поэтому, если необходимо получить все результаты и обработать их командлетом Get-MessageTrackingReport, нужно передать их данному командлету как указано выше.

Поиск по части адреса. К сожалению, Search-MessageTrackingReport и Get-MessageTrackingReport не поддерживают wildcard, т.е. поиск по шаблону. Адрес, указанный в качестве параметра, должен быть корректным. Однако, можно использовать синтаксис как указано ниже. 

Get-ExchangeServer | where {$_.isHubTransportServer  -eq $true -or $_.isMailboxServer -eq $true} | Get-MessageTrackingLog -ResultSize Unlimited -Start "5/1/2011" -End "5/12/2011" | where{$_.recipients -like "*@net.org"} | select-object Timestamp,SourceContext,Source,EventId,MessageSubject,Sender,{$_.Recipients} | export-csv C:\ExchangeLogResults.txt