This post is also available in: angielski
Nieraz korzystamy z logów w których możemy znaleźć informację o przesyłanych wiadomościach – Message Tracking Logs.
Najczęściej korzystamy z narzędzia GUI dostępnego w Exchange Management Console Tracking Log Explorer lub z komendy powershell Get-MessageTrackingLog.
Jak korzystać z polecenia Get-MessageTrackingLog opiszemy innym razem.
Dzisiaj chcielibyśmy się skupić na tym jak można w prosty sposób uzyskać informację na temat emaili które otrzymała dana osoba oraz jak te informacje wyeksportować do Excella aby je łatwo przekazać.
Aby znaleźć wiadomość którą otrzymała dana osoba musimy przeszukać logi na wszystkich serwerach Exchange z zainstalowanymi rolami Hub Transport.
Następnie musimy użyć polecenia Get-MessageTrackingLog ale z parametrem EventId Deliver co oznacza że interesują nas tylko wiadomości które dotarły do danej skrzynki.
Dokładny opis polecenia Get-MessageTrackingLog można znaleźć w poniższym linku:
Ważne jest też odpowiednie skonfigurowanie czasu przetrzymywania logów tansakcyjnych na serwerach z rolami Hub Transport.
Poniższy przykład, przeszukuje logi transportowe wszystkich serwerów Exchange z rolą Hub Transport wyszukując emaile, które otrzymała osoba zdefiniowana w zmiennej Recipient.
#okreslenie poczatkowych parametrow param( [parameter(Position=0,Mandatory=$true,ValueFromPipeline=$false,HelpMessage="Recipient")]$Recipient, ) $OUTFile = "D:\scripts\Deliver.csv" $Recipient = [string]$(Get-Recipient $Recipient).PrimarySMTPAddress if(!$Recipient){ Write-Host "No such Recipient" } #lista serwerow z rola HT $HTServers = Get-TransportServer #przeszukanie logow na wszystkich serwerach ForEach($HTsrv in $HTServers){ $msgtrack += Get-MessageTrackingLog -server $HTsrv -Recipients $Recipient -EventId Deliver -ResultSize Unlimited } #zapisanie wyników do pliku .csv $msgtrack | Sort-Object -Unique -Property Timestamp -Desc | select Sender, Timestamp,@{Name='Recipients';Expression={[string]::join(";", ($_.Recipients))}},MessageSubject | Export-Csv $OUTFile -NoTypeInformation
Powyższy kod powinniśmy przekopiować i zapisać do pliku .ps1 np Export-MSGTrack.ps1 i wówczas wywoływać skrypt z parametrem określającym odbiorcę w poniższy sposób:
Export-MSGTrack.ps1 JSmith
Otrzymany plik możemy bez problemu przeglądać sortować oraz filtrować.
Musimy pamiętać o tym że otrzymamy informację o otrzymanych emailach z takiego okresu przez jaki przetrzymujemy logi na serwerach transportowych.
Dlatego jeżeli mamy tych logów dużo wówczas wyszukiwanie może trwać długo.
Aby przeszukać logi tylko z określonego czasu musimy w linijce:
$msgtrack += Get-MessageTrackingLog -server $HTsrv -Recipients $Recipient -EventId Deliver -ResultSize Unlimited
dodać datę jak poniżej:
$msgtrack += Get-MessageTrackingLog -server $HTsrv -Recipients $Recipient -EventId Deliver -start "2012-10-01 8:00:00 AM" -end "2012-10-31 8:00:00 PM" -ResultSize Unlimited
Z doświadczenia wiemy że ciężko jest wpisać datę w odpowiednim formacie dlatego polecamy przed wpisaniem daty określić jej format za pomocą polecenia:
Get-MailboxRegionalConfiguration JSmith
Wówczas powinniśmy uzyskać informację jakiego formatu data jest obsługiwana i taki format powinniśmy zastosować.