Das PowerShell Get-MessageTrace Befehl kann Office 365 Admins dabei helfen, die Zustellung und Verarbeitung von E-Mail-Nachrichten zu verfolgen, die möglicherweise nicht in den Postfächern ihrer Benutzer landen. In diesem Artikel zeige ich Ihnen, wie Sie den Get-MessageTrace Befehl verwenden können, um E-Mail-Nachrichtenspuren in Office 365 zu verwalten und zu analysieren.
Verwendung von PowerShell Get-MessageTrace mit Exchange Online
Der Get-MessageTrace cmdlet ist die Standardmethode für Administratoren, um den E-Mail-Verkehr innerhalb von Exchange Online zu analysieren und zu verwalten. Dieser PowerShell Befehl ist jedoch nur in Exchange Online (Teil von Office 365) Umgebungen verfügbar.
In einer Exchange-On-Premises-Umgebung ist der PowerShell-Befehl Get-MessageTrace nicht verfügbar, und Ihre Alternative ist das Cmdlet Get-MessageTrackingLog. Der PowerShell-Befehl Get-MessageTrace bietet ähnliche Funktionalität wie sein Gegenstück vor Ort, aber auch dieses Cmdlet ist speziell für cloud-basierte Office-365-Umgebungen konzipiert.
Exchange vor Ort gegen Exchange Online Nachrichtenverfolgung: Wesentliche Unterschiede
- Umgebung: Exchange vor Ort befasst sich mit den eigenen Servern einer Organisation, während Exchange Online ein cloudbasierter Dienst von Microsoft ist.
- Integration: In Exchange Online integriert sich der Befehl Get-MessageTrace nahtlos in die Sicherheits- und Compliance-Funktionen von Office 365, während in lokalen Umgebungen das Cmdlet Get-MessageTrackingLog verwendet werden muss.
- Authentifizierung: Die Authentifizierungsmethoden und PowerShell-Sitzungen werden aufgrund der cloud-basierten Natur von Exchange Online anders verwaltet.
- Skalierbarkeit: Die Skalierbarkeit von Exchange Online ist so ausgelegt, dass große E-Mail-Workloads ohne die Notwendigkeit von Hardware-Upgrades vor Ort gehandhabt werden können.
Verbindung mit Exchange Online herstellen
Hier ist eine kurze Auffrischung: Um Exchange Online-Cmdlets verwenden zu können, müssen Sie eine Remote-PowerShell-Sitzung mit Ihrer Office 365-Umgebung herstellen. Öffnen Sie Windows PowerShell und geben Sie den folgenden Befehl ein.
Connect-ExchangeOnline

Sind Sie bereits vertraut damit? Wenn Sie weitere Unterstützung bei den erforderlichen Voraussetzungen benötigen, um eine Verbindung herzustellen, lesen Sie bitte meinen vorherigen Beitrag zum Thema Verbindung mit Exchange Online herstellen.
Verwenden von Get-MessageTrace mit einem bestimmten Datumsbereich
Die Analyse des E-Mail-Verkehrs innerhalb eines bestimmten Datumsbereichs ist eine gängige administrative Aufgabe. Das Cmdlet Get-MessageTrace ermöglicht es Ihnen, E-Mail-Nachrichten basierend auf ihrem Erstellungs- oder Zustelldatum zu filtern und zu überprüfen. Bitte beachten Sie, dass dieses PowerShell-Kommando höchstens 10 Tage zurückliegende Daten abrufen kann. Wenn Sie den E-Mail-Fluss weiter als vor 10 Tagen untersuchen müssen, müssen Sie das Exchange Admin Center-Website verwenden und eine Nachrichtenverfolgung für einen längeren Zeitraum durchführen.
Hier finden Sie eine schrittweise Anleitung, wie Sie das Get-MessageTrace Cmdlet verwenden können, um Nachrichten innerhalb eines bestimmten Datumsbereich
Letzte x Minuten
Der Parameter „StartDate“ wird verwendet, um den Zeitrahmen festzulegen, nach dem gesucht werden soll. Sie können Daten (bis zu maximal 10 Tage) eingeben. Sie können jedoch auch Zeiten angeben. Stellen Sie sicher, dass Sie Ihre Daten-/Zeitbereiche in Anführungszeichen setzen („“).
Versuchen wir, das Cmdlet Get-MessageTrace zu verwenden, um nach E-Mails innerhalb der letzten 90 Minuten zu suchen:
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 12:15 PM"

I’ll remind you that I am using my Microsoft 365 Developer tenant, so there’s not a lot of email activity occurring. If you get no output, it simply means that no email traffic records were returned. This can be completely normal.
Sie könnten auch einen komplexeren PowerShell-Befehl verwenden, um 45 Minuten zurückzugehen:
Get-MessageTrace -StartDate (Get-Date).AddMinutes(-45) -EndDate (Get-Date)
Lassen Sie mich einige E-Mails senden, damit Sie sehen können, wie die Ausgabe in Ihrer Umgebung funktioniert.
Letzte x Stunden
Jetzt, das ist wichtig – Exchange Online zeichnet die E-Mail-Lieferzeiten fast sicherlich in UTC auf! Ich muss also meine Endzeiten anpassen, und ich zeige Ihnen, wie das geht.
Suchen wir bis zu den letzten 8 oder 9 Stunden zurück:
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 7:00 PM"

Da ist es! Dies zeigt eine E-Mail von einem anderen Konto an mein Hauptkonto des globalen Administrators. Als ich das hier eintippe, habe ich die E-Mail um 12:15 Uhr (CDT) gesendet. Allerdings ist UTC 5 Stunden voraus. Deshalb wird die E-Mail-Zeile die Zustellung um 17:16 Uhr (UTC) anzeigen. Bitte denken Sie an diesen Zeitunterschied!
Letzte x Tage
Auch wenn ich keine E-Mail-Lieferhistorie habe, kann ich Ihnen trotzdem den Befehl zeigen. Wenn Sie ALLE E-Mails anzeigen möchten, die über Exchange Online verarbeitet wurden, können Sie einfach die Daten einschließen.
Get-MessageTrace -StartDate 08/05/2023 -EndDate 08/15/2023

Dort gehen wir. Da ich Azure AD Connect Cloud Sync in diesem Mandanten konfiguriert habe, erhalte ich wöchentlich eine E-Mail mit Statusaktualisierungen. Die E-Mail wurde am 8.8.2023 gesendet.
Denken Sie daran, dass Sie nur maximal 10 Tage zurück suchen können. Wenn Sie weiter zurück in der Zeit suchen müssen, müssen Sie die Funktion „Nachrichtenverfolgung“ auf der Website des Exchange Admin Center verwenden. Dort können Sie eine Anfrage erstellen, um bis zu 90 Tage zurückzugehen.
Verwenden von Get-MessageTrace zur Suche nach Absender-E-Mail-Adresse
Das Identifizieren von Nachrichten, die von einem bestimmten Absender gesendet wurden, kann für verschiedene Zwecke entscheidend sein, wie z.B. die Untersuchung von Kommunikationsmustern oder die Behebung von Sicherheitsbedenken. Der Get-MessageTrace Cmdlet ermöglicht es Ihnen, nach Nachrichtenspuren von einer bestimmten E-Mail-Adresse zu suchen.
So verwenden Sie den Parameter ‘-SenderAddress’ zur Suche nach Nachrichtenspuren von einem bestimmten Absender:
Get-MessageTrace -SenderAddress "[email protected]"

Cool, hier ist noch ein weiterer. Schön und intuitiv. Und ein ausgezeichneter Tipp – wenn Sie die Ergebnisse in das Format-List Cmdlet leiten, erhalten Sie eine ausgezeichnete Zusammenfassung der Ergebnisse, einschließlich des Zustellungsstatus, der Nachrichten-ID, der Nachrichtenverfolgungs-ID, der Absenderadresse, der Empfängeradresse und vielem mehr.

Verwendung von Get-MessageTrace zur Suche nach Empfänger-E-Mail-Adressen
Das Verfolgen von E-Mails, die an einen bestimmten Empfänger gesendet wurden, ist eine weitere wichtige Aufgabe für Administratoren. Ob Sie die E-Mail-Zustellung verwalten oder sicherstellen möchten, dass sensible Informationen die richtigen Personen erreichen, die Möglichkeit zur Suche nach Empfänger-E-Mail-Adressen ist von unschätzbarem Wert.
Lassen Sie uns ein Beispiel verwenden, hier suchen wir nach allen an mich gesendeten E-Mails:
Get-MessageTrace -RecipientAddress "[email protected]"

Dies zeigt 3 E-Mail-Nachrichten, die an meine E-Mail-Adresse im Mandanten gesendet wurden. Und übrigens, wenn Sie keine zeitbezogenen Parameter einschließen, werden die letzten 48 Stunden gemeldet.
Können Sie Get-MessageTrace verwenden, um nach Betreffzeilen von E-Mails zu suchen?
Leider können Sie den Befehl Get-MessageTrace nicht nach Betreff durchsuchen. Für dieses Bedürfnis möchten Sie Microsoft Purview nutzen und eine eDiscovery (Inhalt) Suche erstellen. Weitere Informationen dazu finden Sie in unserem vorherigen Artikel über eDiscovery.
Verwendung von Get-MessageTrace zur Suche nach Quell- und Ziel-IP-Adressen
Sie können auch den Befehl Get-MessageTrace verwenden, um nach Quell- und Ziel-IP-Adressen zu suchen. Dadurch können Sie E-Mail-Nachrichten basierend auf den IP-Adressen der sendenden und empfangenden Server verfolgen. Dies kann besonders nützlich sein, um Zustellungsprobleme zu diagnostizieren, verdächtige Aktivitäten zu identifizieren und den Pfad nachzuvollziehen, den Nachrichten durch Ihre E-Mail-Infrastruktur nehmen.
Hier können wir auch die Parameter ‚-ToIP‘ und ‚-FromIP‘ verwenden. Wenn wir beispielsweise alle E-Mails suchen möchten, die von der Quell-IP-Adresse 44.42.2.55 stammen und unsere Edge-Firewall-Public-IP zum Empfangen von E-Mails, 101.3.2.88, verwenden, könnten wir den folgenden Befehl als Beispiel verwenden.
Get-MessageTrace -ToIP "4.42.2.55" -FromIP "101.3.2.88"

Nochmals, ich habe hier keinen wirklich coolen Inhalt, um Ihnen zu zeigen, aber es funktioniert. Wirklich, es funktioniert.
Verwendung von Platzhaltern und
Sie können auch Platzhalterzeichen verwenden, um die Ergebnisse effizient einzugrenzen. Zum Beispiel, aus Sicherheits- oder Compliance-Gründen, nehmen wir an, dass Ihr Compliance-Beauftragter eine Aufzeichnung aller E-Mails sehen möchte, die in den letzten 48 Stunden von Gmail verarbeitet wurden. Ein Kinderspiel!
Get-MessageTrace -SenderAddress *@gmail.com
Wie Sie sehen, ist das ziemlich einfach zu erreichen. Und dasselbe gilt für Empfänger. Wenn Sie alle E-Mails sehen möchten, die an alle mit einer E-Mail-Adresse beginnend mit dem Buchstaben „m“ versendet wurden, versuchen Sie den folgenden Befehl:
Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com
Wiederum ist das sehr einfach.
Wie man detailliertere Ergebnisse mit Get-MessageTraceDetail erhält
Wenn Sie die Ausgabe des Befehls Get-MessageTrace erweitern möchten, werden Sie erfreut sein zu erfahren, dass das Cmdlet Get-MessageTraceDetail genau das tut und Ihnen die einzelnen Verarbeitungs- und Zustellungsereignisse für eine E-Mail-Transaktion zeigt. Lassen Sie mich Ihnen das zeigen.
Zuerst werde ich das Cmdlet Get-MessageTrace ausführen und es an den Befehl ‚Format-List‘ (fl) weiterleiten, um einige Details zu erhalten.
Get-MessageTrace | fl

Hier sehen wir einige weitere Details zu 4 E-Mail-Nachrichten in den letzten 48 Stunden. Wir können also die Nachrichtenverfolgungs-ID und die Empfängeradresse aus der zweiten E-Mail abrufen und den folgenden Befehl verwenden:
Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]

Hier sehen wir die 3 Ereignisse, die den Empfang und die Zustellung der E-Mail-Nachricht aus dem Internet in Megan’s tatsächliches Exchange-Postfach ausmachen. Sehr schöne Detailtiefe hier. Dies kann möglicherweise zeigen, ob eine Nachricht direkt in den Junk-E-Mail-Ordner eines Benutzers zugestellt wurde oder ob sie automatisch an ein anderes internes (oder externes) Postfach weitergeleitet wurde. Insgesamt sind das sehr hilfreiche Informationen für IT-Profis und Exchange-Administratoren.
Wie man Ergebnisse in eine CSV-Datei exportiert
Oft werden Sie Suchanfragen durchführen, die VIELE Datensätze melden. Sie werden sicherlich Excel verwenden wollen, um die Ergebnisse zu analysieren und zu filtern. Dazu leiten Sie Ihre Ergebnisse einfach über den Export-CSV Befehl, wie folgt:
Get-MessageTrace | Export-CSV AllEmailsInLast48Hours.csv

Dies hat nur ein paar Sekunden gedauert. Sehr schön!
Wie man erweiterte Suchen mit Group-Object durchführt
Sie können das Cmdlet Group-Object verwenden, um einen höheren Überblick über unsere E-Mail-Zustellung zu erhalten.
Aktivste E-Mail-Versender
Sie können den folgenden Befehl verwenden, um Benutzer zu finden, die in den letzten 7 Tagen die meisten E-Mails gesendet haben. Lassen Sie mich Ihnen den Befehl zeigen und ihn dann erklären.
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property SenderAddress | Select Name,Count | Sort Count -Descending

Hier erfassen wir zunächst die vollständige Liste der in den letzten 10 Tagen verarbeiteten E-Mails. Dann verwenden wir diese Ausgabe und verwenden das Group-Object-Befehl, verwenden die Eigenschaft ‚SenderAddress‘, erhalten die Anzahl (Anzahl der E-Mails) und sortieren sie nach der höchsten Menge zuerst.
Empfänger, die die meisten E-Mails erhalten
In ähnlicher Weise können wir sehr schnell die Benutzer erfassen, die in den letzten 10 Tagen die meisten E-Mails erhalten haben, indem wir denselben Befehl ausführen und die Eigenschaft ‚SenderAddress‘ durch ‚RecipientAddress‘ ersetzen. Schauen wir, was passiert:
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property RecipientAddress | Select Name,Count | Sort Count -Descending

I do love how powerful and simple PowerShell can be. Now, we have the information. Again, the data in this tenant is VERY low. You will undoubtedly see more robust results when you run these commands in your tenant.
Das Cmdlet Get-MessageTrace bietet Flexibilität und Kontrolle</
Ob Sie innerhalb eines bestimmten Datumsbereichs suchen müssen, Nachrichtenspuren von einem bestimmten Absender identifizieren oder Nachrichtenspuren verfolgen müssen, die an einen bestimmten Empfänger gesendet wurden, bietet das Get-MessageTrace-Cmdlet die Flexibilität und Kontrolle, die Sie benötigen. Darüber hinaus verbessert die Möglichkeit, Ergebnisse in eine CSV-Datei zu exportieren, Ihre Fähigkeit, E-Mail-Kommunikationsmuster zu analysieren und zu dokumentieren. Indem Sie den Gebrauch des Get-MessageTrace-Cmdlets beherrschen, können Sie den E-Mail-Verkehr effektiv verwalten und wertvolle Einblicke in die Kommunikationsaktivitäten Ihrer Organisation gewinnen.