Het PowerShell Get-MessageTrace-commando kan Office 365-beheerders helpen bij het volgen van de levering en verwerking van e-mailberichten die mogelijk niet in de postvakken van hun gebruikers terechtkomen. In dit artikel laat ik je zien hoe je het Get-MessageTrace-commando kunt gebruiken om e-mailberichtsporen te beheren en te analyseren in Office 365.
Het gebruik van PowerShell Get-MessageTrace met Exchange Online
Het Get-MessageTrace-cmdlet is de standaardmethode voor beheerders om e-mailverkeer te analyseren en te beheren binnen Exchange Online. Dit PowerShell-commando is echter alleen beschikbaar in Exchange Online-omgevingen (onderdeel van Office 365).
In een Exchange on-premises omgeving is het PowerShell-commando Get-MessageTrace niet beschikbaar, en je alternatief is de cmdlet Get-MessageTrackingLog. Het PowerShell-commando Get-MessageTrace biedt vergelijkbare functionaliteit als zijn on-premises tegenhanger, maar deze cmdlet is specifiek ontworpen voor cloudgebaseerde Office 365-omgevingen.
Exchange on-premises vs. Exchange Online berichttracering: Belangrijkste verschillen
- Omgeving: Exchange on-premises werkt met de eigen servers van een organisatie, terwijl Exchange Online een cloudgebaseerde service is die wordt geleverd door Microsoft.
- Integratie: In Exchange Online integreert het commando Get-MessageTrace naadloos met de beveiligings- en nalevingsfuncties van Office 365, terwijl in on-premises omgevingen de cmdlet Get-MessageTrackingLog moet worden gebruikt.
- Authenticatie: De authenticatiemethoden en PowerShell-sessies worden anders beheerd vanwege de cloudgebaseerde aard van Exchange Online.
- Schaalbaarheid: De schaalbaarheid van Exchange Online is ontworpen om grote e-mailwerkbelastingen aan te kunnen zonder dat er hardware-upgrades op locatie nodig zijn.
Verbinding maken met Exchange Online
Hier is een snelle opfrisser: om cmdlets voor Exchange Online te gebruiken, moet je een externe PowerShell-sessie opzetten met je Office 365-omgeving. Open Windows PowerShell en voer de volgende opdracht uit.
Connect-ExchangeOnline

Daar ben je aan gewend, toch? Als je wat meer hulp nodig hebt met de vereisten om verbinding te kunnen maken, lees dan mijn vorige bericht over hoe je verbinding kunt maken met Exchange Online.
Het gebruik van Get-MessageTrace met een specifiek datumbereik
Het analyseren van e-mailverkeer binnen een specifiek datumbereik is een veelvoorkomende administratieve taak. De cmdlet Get-MessageTrace stelt je in staat om e-mailberichten te filteren en te bekijken op basis van hun creatie- of bezorgingsdatum. Houd er rekening mee dat deze PowerShell-opdracht maximaal 10 dagen geschiedenis kan opvragen. Als je e-mailverkeer van meer dan 10 dagen geleden moet onderzoeken, moet je de Exchange-beheercentrum-website gebruiken en een berichtspoor uitvoeren voor een langere periode.
Hier is een stapsgewijze handleiding over hoe je de cmdlet Get-MessageTrace kunt gebruiken om berichten te zoeken binnen een specifiek datumbereik.
Laatste x minuten
De parameter ‘StartDate’ wordt gebruikt om aan te geven binnen welk tijdsbestek je wilt zoeken. Je kunt datums invoeren (tot maximaal 10 dagen). Je kunt echter ook tijden toevoegen. Zorg ervoor dat je je datum-/tijdsbereiken tussen aanhalingstekens (“”) plaatst.
Laten we proberen de Get-MessageTrace-cmdlet te gebruiken om te zoeken naar e-mails van de laatste 90 minuten:
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.
Je zou ook een meer geavanceerde PowerShell-opdracht kunnen gebruiken om 45 minuten terug te gaan als volgt:
Get-MessageTrace -StartDate (Get-Date).AddMinutes(-45) -EndDate (Get-Date)
Laat me wat e-mails sturen zodat je kunt zien hoe de uitvoer werkt in jouw omgeving.
Laatste x uur
Dit is nu belangrijk – Exchange Online zal vrijwel zeker e-mailafleveringstijden opslaan in UTC! Dus, ik moet mijn einddatums aanpassen, en ik zal je laten zien hoe dat moet.
Laten we terugzoeken naar de laatste 8 of 9 uur:
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 7:00 PM"

Daar gaan we! Dit toont een e-mail van een ander account naar mijn hoofdaccount van de Global Administrator. Terwijl ik dit typ, heb ik de e-mail rond 12:15 PM (CDT) verstuurd. Echter, UTC loopt 5 uur voor. Daarom meldt de e-mailrij de aflevering om 5:16 PM (UTC). Houd dat tijdsverschil alsjeblieft in gedachten!
Laatste x dagen
Hoewel ik geen e-mailafleveringsgeschiedenis heb, kan ik je toch de opdracht laten zien. Als je ALLE e-mails verwerkt via Exchange Online wilt tonen, kun je eenvoudig de datums opnemen.
Get-MessageTrace -StartDate 08/05/2023 -EndDate 08/15/2023

Daar gaan we. Omdat ik Azure AD Connect Cloud Sync heb geconfigureerd in deze tenant, ontvang ik wekelijks een e-mail met statusupdates. De e-mail werd verzonden op 8/8/2023.
Nogmaals, onthoud, je kunt alleen tot maximaal 10 dagen terugzoeken. Als je verder terug in de tijd wilt kijken, moet je de functie Berichttraceren gebruiken op de website Exchange Admin Center. Daar kun je een verzoek maken om tot 90 dagen terug te gaan.
Het gebruik van Get-MessageTrace om te zoeken op afzender e-mailadres
Het identificeren van berichten verzonden door een specifieke afzender kan cruciaal zijn voor verschillende doeleinden, zoals het onderzoeken van communicatiepatronen of het aanpakken van beveiligingsproblemen. Het Get-MessageTrace cmdlet stelt je in staat om te zoeken naar berichttraces vanuit een specifiek e-mailadres.
Zo gebruik je de ‘-SenderAddress’ parameter om te zoeken naar berichttraces van een specifieke afzender:
Get-MessageTrace -SenderAddress "[email protected]"

Mooi, er is er nog een. Mooi en intuïtief. En een uitstekende tip – als je de resultaten doorgeeft aan de Format-List cmdlet, krijg je een uitstekende samenvatting van de resultaten, inclusief de bezorgstatus, het bericht-id, de bericht-trace-id, het afzenderadres, het ontvangeradres, en nog veel meer.

Het gebruik van Get-MessageTrace om te zoeken op ontvanger e-mailadres
Het volgen van e-mails die naar een bepaalde ontvanger zijn gestuurd, is een andere essentiële taak voor beheerders. Of je nu e-mailbezorging beheert of ervoor zorgt dat gevoelige informatie bij de juiste personen terechtkomt, de mogelijkheid om te zoeken op ontvanger e-mailadres is onschatbaar.
Laten we een voorbeeld gebruiken, hier zullen we zoeken naar alle e-mails die zijn bezorgd aan… mij:
Get-MessageTrace -RecipientAddress "[email protected]"

Dit toont 3 e-mailberichten die naar mijn e-mailadres in de huurder zijn gestuurd. En trouwens, als je GEEN tijdgerelateerde parameters opneemt, zal het de laatste 48 uur rapporteren.
Kun je Get-MessageTrace gebruiken om te zoeken op e-mailonderwerp?
Helaas kunt u het Get-MessageTrace-commando niet gebruiken om te zoeken op onderwerp. Voor deze behoefte wilt u Microsoft Purview gebruiken en een eDiscovery (inhouds)zoekopdracht maken. U kunt meer informatie daarover vinden in ons vorige artikel over eDiscovery.
Het gebruik van Get-MessageTrace om te zoeken op bron- en bestemmings-IP-adres
U kunt ook het Get-MessageTrace-commando gebruiken om te zoeken op bron- en bestemmings-IP-adressen. Dit stelt u in staat om e-mailberichten te volgen op basis van de IP-adressen van de verzendende en ontvangende servers. Dit kan met name handig zijn voor het diagnosticeren van leveringsproblemen, het identificeren van verdachte activiteiten en het begrijpen van de route die berichten afleggen door uw e-mailinfrastructuur.
Hier kunnen we ook de ‘-ToIP’ en ‘-FromIP’ parameters gebruiken. Bijvoorbeeld, als we alle e-mails willen zoeken die afkomstig zijn van het bron-IP-adres 44.42.2.55 en ons edge-firewall’s openbare IP voor het ontvangen van e-mail, 101.3.2.88, kunnen we het volgende commando als voorbeeld gebruiken.
Get-MessageTrace -ToIP "4.42.2.55" -FromIP "101.3.2.88"

Nogmaals, ik heb hier geen echt coole inhoud om aan u te laten zien, maar het werkt. Echt, dat doet het.
Hoe wildcards en gedeeltelijke overeenkomsten te gebruiken
U kunt ook wildcard-tekens gebruiken om resultaten efficiënt te beperken. Bijvoorbeeld, om veiligheids- of nalevingsredenen, laten we zeggen dat uw nalevingsfunctionaris een overzicht wil zien van alle e-mails die in de afgelopen 48 uur vanuit Gmail zijn verwerkt. Een fluitje van een cent!
Get-MessageTrace -SenderAddress *@gmail.com
Zo, dat is heel eenvoudig te doen. En hetzelfde geldt voor ontvangers. Als u alle e-mails wilt zien die naar iedereen zijn gestuurd met een e-mailadres dat begint met de letter “m”, probeer dan het volgende commando:
Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com
Nogmaals, dat is heel eenvoudig.
Hoe u gedetailleerdere resultaten krijgt met Get-MessageTraceDetail
Als u de uitvoer van het Get-MessageTrace commando wilt uitbreiden, zult u verheugd zijn om te horen dat de Get-MessageTraceDetail cmdlet hierop voortbouwt en u de individuele verwerkings- en bezorggebeurtenissen voor een e-mailtransactie laat zien. Laat me het u laten zien.
Eerst zal ik het Get-MessageTrace cmdlet uitvoeren en dit doorpompen naar het ‘Format-List’ (fl) commando om wat details te krijgen.
Get-MessageTrace | fl

Hier kunnen we wat meer details zien over 4 e-mailberichten in de afgelopen 48 uur. Dus wat we kunnen doen is de Message Trace ID en de Ontvangeradres uit het tweede e-mailbericht halen en de volgende opdracht gebruiken:
Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]

Hier kunnen we de 3 gebeurtenissen zien die de ontvangst en levering van het e-mailbericht vanaf het internet tot in Megan’s eigen Exchange-postvak vormen. Heel veel details hier. Dit kan in theorie laten zien of een bericht rechtstreeks in een gebruiker’s Junk Email-map werd geleverd, of dat het automatisch naar een ander interne (of externe) postvak werd doorgestuurd. Over het algemeen is dat heel nuttige informatie voor IT-professionals en Exchange-beheerders.
Hoe resultaten naar een CSV-bestand exporteren
Meestal zal je zoekopdrachten uitvoeren die veel records zullen rapporteren. Je zult zeker Excel willen gebruiken om de resultaten te analyseren en te filteren. Om dit te doen, gewoon je resultaten doorgeven via de Export-CSV opdracht, zoals dit:
Get-MessageTrace | Export-CSV AllEmailsInLast48Hours.csv

Dit duurde slechts een paar seconden. Heel mooi!
Hoe geavanceerde zoekopdrachten uit te voeren met Group-Object
U kunt de Group-Object cmdlet gebruiken om een meer hoog-niveau overzicht te krijgen van onze e-mail levering.
Meest actieve e-mail verzenders
U kunt de volgende opdracht gebruiken om gebruikers te vinden die de meeste e-mails hebben verstuurd in de afgelopen 7 dagen. Laat me u de opdracht tonen, dan zal ik het uitleggen.
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property SenderAddress | Select Name,Count | Sort Count -Descending

Hier verzamelen we eerst de volledige lijst van e-mails verwerkt in de afgelopen 10 dagen. Vervolgens nemen we die output en gebruiken de Group-Object opdracht, gebruiken de eigenschap ‘SenderAddress’, krijgen het aantal (aantal e-mails) en sorteren het op de hoogste hoeveelheid eerst.
Ontvangers die de meeste e-mail ontvangen
Op een vergelijkbare manier kunnen we heel snel de gebruikers verzamelen die de meeste e-mails hebben ontvangen in de afgelopen 10 dagen door dezelfde opdracht uit te voeren en de eigenschap ‘SenderAddress’ te vervangen door ‘RecipientAddress’. Laten we eens kijken wat er gebeurt:
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.
De Get-MessageTrace cmdlet biedt flexibiliteit en controle
Of je nu moet zoeken binnen een specifieke datumbereik, berichtsporen van een specifieke afzender moet identificeren, of berichtsporen moet volgen die naar een specifieke ontvanger zijn gestuurd, de Get-MessageTrace cmdlet biedt de flexibiliteit en controle die je nodig hebt. Bovendien verbetert de mogelijkheid om resultaten naar een CSV-bestand te exporteren je vermogen om e-mailcommunicatiepatronen te analyseren en documenteren. Door het beheersen van het gebruik van de Get-MessageTrace cmdlet, kun je e-mailverkeer effectief beheren en waardevolle inzichten krijgen in de communicatieactiviteiten van je organisatie.