This post is also available in: angielski
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