Get-MessageTrackingLog wyswietlenie wszystkich odbiorców

Uruchamiając polecenie Get-MessageTrackingLog w celu wyszukania informacji na temat wysłanych lub otrzymanych emaili otrzymujemy listę odbiorców (recipients) w formie obiektu lub tabeli.

Często jeżeli odbiorców jest więcej nie wyświetlają się oni w całości.

Dodatkowo jeżeli wyniki chcemy zapisać do pliku wówczas również nie otrzymamy informacji o odbiorcach a jedynie wpis SystemObject.

Dlatego aby bez problemów wyświetlić lub zapisać wszystkich odbiorców wyszukanych emaili do pliku możemy użyć polecenia join dla obiektów w kolumnie recipients jak poniżej:

[string]::join(",",$_.recipients)

 

Spowoduje to umieszczenie wszystkich odbiorców danego emaila w jednej linii oddzielonych przecinkiem.

Całe polecenie wyszukania emaili wysłanych przez daną osobę będzie wyglądało mniej więcej tak:

Get-TransportServer | Get-MessageTrackingLog -resultsize unlimited-eventid receive | ? {$_.sender -like "john@domain.com"  -and $_.source -eq "STOREDRIVER"} | Select-Object timestamp, sender, messagesubject, @{label="recipients";expression={[string]::join(",",$_.recipients)}} | sort timestamp | ft -auto

 

Wykonanie tego polecenia spowoduje wyświetlenie listy emaili z informacjami o dacie wysłania, nadawcy, temacie oraz odbiorcach.

Aby zapisać ten wynik do pliku możemy użyć: > lub Out-File.

Niestety jeżeli odbiorców będzie zbyt wielu w pliku zostanie zapisana ich niepełna wartość i dodane

Aby wartości zostały zapisane poprawnie zastosować możemy:

Out-String -Width 4096 > D:\logs\emails_sent.txt

 

czyli całe polecenie będzie wyglądało:

Get-TransportServer | Get-MessageTrackingLog -resultsize unlimited-eventid receive | ? {$_.sender -like "john@domain.com"  -and $_.source -eq "STOREDRIVER"} | Select-Object timestamp, sender, messagesubject, @{label="recipients";expression={[string]::join(",",$_.recipients)}} | sort timestamp | ft -auto | Out-String -Width 4096 > D:\logs\emails_sent.txt