Message Tracking Logs eksport do Excella

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:

Get-MessageTrackingLog

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ć.

 

Print Friendly
Otagowany , , , , , .Dodaj do zakładek permalink.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>