Za pomocą polecenia cmdlet można analizować dzienniki transportu podczas śledzenia wiadomości e-mail w programie Exchange. Get-MessageTrackingLog Konsola Shell Management Exchange. W tym artykule wymienię przykłady jednowierszowych poleceń PowerShell, których często używam podczas wyszukiwania i śledzenia routingu poczty w Exchange Server 2016/2013/2010 i Office 365 (Exchange Online).
Przypomnę, że dzienniki transportu Exchange są przechowywane w katalogu % ExchangeInstallPath% TransportRoles \ Logs \ MessageTracking
a najbardziej skutecznym i elastycznym sposobem analizowania tych dzienników podczas śledzenia wiadomości w systemie Exchange jest użycie polecenia cmdlet Get-MessageTrackingLog.
Przede wszystkim rozważ główne parametry polecenia cmdlet Get-MessageTrackingLog, którego można użyć do filtrowania zdarzeń w dziennikach. Najczęściej używane parametry polecenia cmdlet to:
- Nadawca - wyszukiwanie według nadawcy;
- Odbiorcy - wyszukiwanie według odbiorcy;
- Serwer - Wyszukaj na konkretnym serwerze transportowym
- Start „02/30/2019 08:00:00” -Koniec „02/31/2019 21:00:00” - wyszukaj określony czas;
- MessageSubject - szukaj na temat wiadomości;
- Eventid - wyszukiwanie według kodu zdarzenia serwera (zwykle używane są kody ODBIÓR, WYSŁANIE, AWARIA, DSN, DOSTAWA, BADMAIL, ROZDZIELCZOŚĆ, ROZSZERZENIE, REDIRECT, TRANSFER, PRZESYŁANIE, POISONMESSAGE, DEFER);
- messageID - śledzenie liter według jego identyfikatora.
Jeśli uruchomisz polecenie cmdlet Get-MessageTrackingLog
bez parametrów zostaną wyświetlone wszystkie zdarzenia z dzienników Exchange z ostatnich 30 dni. Dobrze, że przy takim uruchomieniu polecenie cmdlet wyświetla tylko ostatnie 1000 zdarzeń. Aby usunąć limit liczby wyświetlanych zdarzeń, musisz określić parametr -ResultSize Nieograniczony (nie jest to zalecane bez określania dodatkowych parametrów filtrowania ze względu na możliwe wysokie obciążenie serwera).
Możesz wyświetlić informacje o zdarzeniach Exchange w formie strony za pomocą polecenia:
Get-MessageTrackingLog | Out-Host-Paging
Aby przedstawić dane w formie tabelarycznej i wyrównać szerokość kolumn, użyj polecenia cmdlet Format-Table:
Get-MessageTrackingLog | Format-Table -AutoSize
Jeśli Twoja organizacja Exchange używa kilku serwerów Hub Transport, w celu przeszukania dzienników serwera podaj nazwę serwera jako argument parametru -Server lub uruchom polecenie wyszukiwania dla każdego serwera Hub Transport:
Get-TransportServer | Get-MessageTrackingLog
Wyświetlamy wszystkie litery w ciągu ostatnich 12 godzin ((Get-Date) .AddHours (-12)
), w którym adresat z systemu pocztowego @ gmail.com jest wskazany jako odbiorca:
Get-MessageTrackingLog -Start (Get-Date) .AddHours (-12) -ResultSize nieograniczony | gdzie [ciąg] $ _. adresaci-jak „*@gmail.com”
Aby wyświetlić wszystkie listy wysłane przez określonego użytkownika przez określony czas przez określony serwer (w raporcie zostaną wyświetlone tylko niektóre pola):
Get-MessageTrackingLog -ResultSize nieograniczony -Sender „[email protected]” -server msk-hub-01 -Start ”03/30/2019 08:00:00„ -End ”04/04/2019 21:00:00 | select-object Datownik, Nadawca, Odbiorcy, MessageSubject, EventId | ft
Znajdź wszystkie listy wysłane przez jednego użytkownika do drugiego i prześlij wynik do pliku CSV:
Get-MessageTrackingLog -Sender "[email protected]" -Recipients "[email protected]" -ResultSize nieograniczony-serwer msk-hub-01 | Znacznik czasu obiektu, nadawca, $ _. Recipients, MessageSubject | Export-Csv -Path "C: \ ps \ exchange \ msg_tracking_out.csv" -Encoding Default -Delimiter ";"
Szukaj na temat listu. Aby wyświetlić wszystkie litery z wierszem tematu zawierającym frazę „test”, uruchom następujące polecenie (aby wyświetlić wyniki wyszukiwania w osobnym tabelarycznym oknie graficznym z wygodnymi opcjami sortowania, filtrowania i wyszukiwania danych, możesz użyć polecenia cmdlet out-gridview):
Get-MessageTrackingLog -MessageSubject „test” -ResultSize nieograniczony -server msk-hub-01 | Znacznik czasu obiektu, nadawca, $ _. Recipients, MessageSubject | out-gridview
Możesz wyszukiwać według określonego identyfikatora wiadomości (na przykład otrzymałeś go z nagłówków usługi wiadomości w Outlooku):
Get-MessageTrackingLog -messageID "[email protected]" -ResultSize nieograniczony -server msk-hub-01 | Znacznik czasu obiektu, nadawca, $ _. Recipients, MessageSubject
Aby obliczyć liczbę wiadomości przychodzących z ostatnich 7 dni dla określonej skrzynki pocztowej, wykonaj następujące czynności:
(Get-MessageTrackingLog -EventID „RECEIVE” -Recipients ”[email protected]„ -ResultSize nieograniczony).
Możesz wyświetlać statystyki dotyczące liter z grupowaniem. Na przykład chcesz zobaczyć, ile listów od różnych nadawców z domeny mail.ru Twoja organizacja otrzymała w ciągu 1 dnia (wyświetlimy całkowitą liczbę listów wysłanych przez każdego zewnętrznego nadawcę):
Get-MessageTrackingLog -EventId „Receive” -Start (Get-Date) .AddDays (-1) -ResultSize Unlimited | Where-Object $ _. Podobny do nadawcy „*@mail.ru” | Nadawca obiektu grupowego | Sortuj liczbę obiektów - malejące | Tabela formatów *
Office 365 ma możliwość wyszukiwania dzienników śledzenia z interfejsu internetowego Exchange Admin Center (EAC). Przejdź do sekcji Przepływ poczty -> Śledzenie wiadomości. Wypełnij wymagane pola wyszukiwania. Zasadniczo jest to interfejs sieciowy polecenia cmdlet Get-MessageTrackingLog, który umożliwia użytkownikowi utworzenie polecenia PowerShell w prostej formie do wyszukiwania wiadomości według dziennika.
Powyższe metody pomogą uzyskać statystyki dotyczące wiadomości wysyłanych i odbieranych w systemie Exchange oraz diagnozować problemy z wysyłaniem wiadomości.