La commande Get-MessageTrace de PowerShell peut aider les administrateurs d’ Office 365 à suivre la livraison et le traitement des messages électroniques qui pourraient ne pas arriver dans les boîtes aux lettres de leurs utilisateurs. Dans cet article, je vous montrerai comment utiliser la commande Get-MessageTrace pour gérer et analyser les traces de messages électroniques dans Office 365.
Utilisation de PowerShell Get-MessageTrace avec Exchange Online
La cmdlet Get-MessageTrace est la méthode par défaut pour les administrateurs afin d’analyser et de gérer le trafic électronique dans Exchange Online. Cependant, cette commande PowerShell n’est disponible que dans les environnements Exchange Online (partie d’Office 365).
Dans un environnement Exchange sur site, la commande PowerShell Get-MessageTrace n’est pas disponible, et votre alternative est le cmdlet Get-MessageTrackingLog. La commande PowerShell Get-MessageTrace fournit des fonctionnalités similaires à son homologue sur site, mais encore une fois, ce cmdlet est spécifiquement conçu pour les environnements Office 365 basés sur le cloud.
Tracé des messages dans Exchange sur site vs Exchange Online : Différences clés
- Environnement : Exchange sur site traite avec les serveurs de l’organisation, tandis qu’Exchange Online est un service basé sur le cloud fourni par Microsoft.
- Intégration : Dans Exchange Online, la commande Get-MessageTrace s’intègre parfaitement aux fonctionnalités de sécurité et de conformité d’Office 365, tandis que dans les environnements sur site, le cmdlet Get-MessageTrackingLog doit être utilisé.
- Authentification : Les méthodes d’authentification et les sessions PowerShell sont gérées différemment en raison de la nature basée sur le cloud d’Exchange Online.
- Scalabilité : La scalabilité d’Exchange Online est conçue pour gérer de gros volumes de courrier électronique sans nécessiter de mises à niveau matérielles sur site.
Connexion à Exchange Online
Voici un petit rappel : pour utiliser n’importe quelle commande Exchange Online, vous devez établir une session PowerShell à distance avec votre environnement Office 365. Ouvrez Windows PowerShell et exécutez la commande suivante.
Connect-ExchangeOnline

Vous y êtes habitué, n’est-ce pas ? Si vous avez besoin d’un peu plus d’aide avec les prérequis nécessaires pour pouvoir vous connecter, veuillez consulter mon précédent article sur comment se connecter à Exchange Online.
Utilisation de Get-MessageTrace avec une plage de dates spécifique
L’analyse du trafic e-mail dans une plage de dates spécifique est une tâche administrative courante. La commande Get-MessageTrace vous permet de filtrer et de consulter les messages électroniques en fonction de leur date de création ou de livraison. Veuillez noter qu’il y a un maximum de 10 jours d’historique que cette commande PowerShell peut accéder. Si vous devez enquêter sur le flux d’e-mails datant de plus de 10 jours, vous devrez utiliser le site Centre d’administration Exchange et exécuter une recherche de messages sur une période plus longue.
Voici un guide étape par étape sur la façon d’utiliser la commande Get-MessageTrace pour rechercher des messages dans une plage de dates spécifique.
Les dernières x minutes
Le paramètre ‘StartDate’ est utilisé pour spécifier la période que vous souhaitez rechercher. Vous pouvez entrer des dates (jusqu’à un maximum de 10 jours). Cependant, vous pouvez également inclure des heures. Assurez-vous d’encadrer vos plages de données/heure entre guillemets («»).
Essayons d’utiliser la commande Get-MessageTrace pour rechercher des e-mails des 90 dernières minutes :
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.
Vous pourriez également utiliser une commande PowerShell plus élaborée pour remonter de 45 minutes de cette manière :
Get-MessageTrace -StartDate (Get-Date).AddMinutes(-45) -EndDate (Get-Date)
Laissez-moi envoyer quelques e-mails pour que vous puissiez voir comment la sortie fonctionnera dans votre environnement.
Les dernières x heures
Maintenant, c’est important – Exchange Online enregistrera presque certainement les heures de livraison des e-mails en UTC ! Donc, je dois ajuster mes heures de fin, et je vais vous montrer comment faire.
Recherchons jusqu’aux 8 ou 9 dernières heures :
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 7:00 PM"

Voilà ! Cela montre un e-mail d’un autre compte à mon compte principal d’administrateur global. Au moment où j’écris ceci, j’ai envoyé l’e-mail vers 12h15 (CDT). Cependant, UTC a 5 heures d’avance. C’est pourquoi la ligne de l’e-mail indique une livraison à 17h16 (UTC). Veuillez garder cette différence de temps à l’esprit !
Les derniers x jours
Bien que je n’aie pas d’historique de livraison d’e-mails, je peux quand même vous montrer la commande. Si vous souhaitez afficher TOUS les e-mails traités via Exchange Online, vous pouvez simplement inclure les dates.
Get-MessageTrace -StartDate 08/05/2023 -EndDate 08/15/2023

Il y a. Parce que j’ai Azure AD Connect Cloud Sync configuré dans ce locataire, je reçois un e-mail hebdomadaire avec des mises à jour de statut. L’e-mail a été envoyé le 8/8/2023.
Encore une fois, rappelez-vous, vous ne pouvez rechercher en arrière que jusqu’à 10 jours maximum. Si vous devez remonter plus loin dans le temps, vous devrez utiliser la fonction de traçage des messages sur le site Web du Centre d’administration Exchange. Là, vous pouvez créer une demande pour remonter jusqu’à 90 jours.
Utilisation de Get-MessageTrace pour rechercher par adresse e-mail de l’expéditeur
L’identification des messages envoyés par un expéditeur spécifique peut être cruciale pour diverses raisons, telles que l’investigation des schémas de communication ou la résolution des problèmes de sécurité. La commande Get-MessageTrace vous permet de rechercher des traces de messages à partir d’une adresse e-mail particulière.
Voici comment utiliser le paramètre ‘-SenderAddress’ pour rechercher des traces de messages d’un expéditeur spécifique:
Get-MessageTrace -SenderAddress "[email protected]"

Cool, il y en a un autre. Agréable et intuitif. De plus, un excellent conseil – si vous redirigez les résultats vers la cmdlet Format-List, vous obtiendrez un excellent résumé des résultats, y compris le statut de livraison, l’identifiant de message, l’identifiant de traçage de message, l’adresse de l’expéditeur, l’adresse du destinataire, et bien plus encore.

Utilisation de Get-MessageTrace pour rechercher par adresse e-mail du destinataire
Le suivi des e-mails envoyés à un destinataire particulier est une autre tâche essentielle pour les administrateurs. Que vous gériez la livraison d’e-mails ou que vous vous assuriez que des informations sensibles parviennent aux bonnes personnes, la capacité de rechercher par adresse e-mail du destinataire est inestimable.
Prenons un exemple, ici nous rechercherons tous les e-mails livrés à… moi :
Get-MessageTrace -RecipientAddress "[email protected]"

Cela montre 3 messages électroniques envoyés à mon adresse e-mail dans le locataire. Et, au fait, si vous n’incluez AUCUN paramètre lié au temps, il rapportera les 48 dernières heures.
Pouvez-vous utiliser Get-MessageTrace pour rechercher par objet d’e-mail?
Malheureusement, vous ne pouvez pas utiliser la commande Get-MessageTrace pour rechercher par sujet. Pour ce besoin, vous voudrez utiliser Microsoft Purview et créer une recherche eDiscovery (contenu). Vous pouvez trouver plus d’informations à ce sujet dans notre article précédent sur l’eDiscovery.
Utilisation de Get-MessageTrace pour rechercher par adresse IP source et de destination
Vous pouvez également utiliser la commande Get-MessageTrace pour rechercher par adresses IP source et de destination. Cela vous permet de suivre les messages électroniques en fonction des adresses IP des serveurs émetteurs et récepteurs. Cela peut être particulièrement utile pour diagnostiquer les problèmes de livraison, identifier des activités suspectes et comprendre le chemin emprunté par les messages à travers votre infrastructure de messagerie électronique.
Ici, nous pouvons également utiliser les paramètres ‘-ToIP’ et ‘-FromIP’. Par exemple, si nous voulions rechercher tous les e-mails provenant de l’adresse IP source 44.42.2.55 et de l’adresse IP publique de notre pare-feu de bordure pour recevoir des e-mails, 101.3.2.88, nous pourrions utiliser la commande suivante à titre d’exemple.
Get-MessageTrace -ToIP "4.42.2.55" -FromIP "101.3.2.88"

Encore une fois, je n’ai pas vraiment de contenu cool à vous montrer, mais ça fonctionne. Vraiment, ça fonctionne.
Comment utiliser des jokers et des correspondances partielles
Vous pouvez également utiliser des caractères génériques pour affiner efficacement les résultats. Par exemple, pour des raisons de sécurité ou de conformité, disons que votre responsable de la conformité souhaite voir un enregistrement de tous les e-mails traités depuis Gmail au cours des 48 dernières heures. Un jeu d’enfant !
Get-MessageTrace -SenderAddress *@gmail.com
Comme vous pouvez le voir, c’est assez facile à faire. Et vous pouvez faire de même pour les destinataires. Si vous voulez voir tous les e-mails envoyés à tous ceux dont l’adresse e-mail commence par la lettre « m », essayez la commande suivante :
Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com
Encore une fois, c’est très simple.
Comment obtenir des résultats plus détaillés avec Get-MessageTraceDetail
Si vous cherchez à étendre la sortie de la commande Get-MessageTrace, vous serez ravi d’apprendre que le cmdlet Get-MessageTraceDetail étend cela et vous montre les événements individuels de traitement et de livraison pour une transaction d’e-mail. Laissez-moi vous montrer.
Tout d’abord, je vais exécuter le cmdlet Get-MessageTrace et le rediriger vers la commande « Format-List » (fl) pour obtenir des détails.
Get-MessageTrace | fl

Ici, nous pouvons voir plus de détails sur 4 messages électroniques au cours des 48 dernières heures. Ainsi, ce que nous pouvons faire est de prendre l’identifiant de traçage du message et l’adresse du destinataire du deuxième e-mail et d’utiliser la commande suivante :
Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]

Ici, nous pouvons voir les 3 événements qui composent la réception et la livraison du message électronique depuis Internet dans la boîte aux lettres Exchange réelle de Megan. Très bon niveau de détail ici. Cela peut potentiellement montrer si un message a été livré directement dans le dossier Courrier indésirable d’un utilisateur, ou s’il a été automatiquement transféré vers une autre boîte aux lettres interne (ou externe). Dans l’ensemble, il s’agit d’informations très utiles pour les professionnels de l’informatique et les administrateurs Exchange.
Comment exporter les résultats vers un fichier CSV
Le plus souvent, vous effectuerez des recherches qui rapporteront DE NOMBREUX enregistrements. Vous voudrez certainement utiliser Excel pour analyser et filtrer les résultats. Pour ce faire, transmettez simplement vos résultats via la commande Export-CSV, comme ceci :
Get-MessageTrace | Export-CSV AllEmailsInLast48Hours.csv

Cela n’a pris que quelques secondes. Très bien !
Comment effectuer des recherches avancées avec Group-Object
Vous pouvez utiliser le cmdlet Group-Object pour obtenir une vue plus globale de notre livraison d’e-mails.
Expéditeurs d’e-mails les plus actifs
Vous pouvez utiliser la commande suivante pour trouver les utilisateurs ayant envoyé le plus d’e-mails au cours des 7 derniers jours. Laissez-moi vous montrer la commande, puis je vous l’expliquerai.
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property SenderAddress | Select Name,Count | Sort Count -Descending

Ici, nous rassemblons d’abord la liste complète des e-mails traités au cours des 10 derniers jours. Ensuite, nous prenons cette sortie et utilisons la commande Group-Object, utilisons la propriété « SenderAddress », obtenons le nombre d’e-mails et les classons par ordre décroissant.
Destinataires recevant le plus d’e-mails
Dans un esprit similaire, nous pouvons rapidement rassembler les utilisateurs ayant reçu le plus d’e-mails au cours des 10 derniers jours en exécutant la même commande et en remplaçant la propriété « SenderAddress » par « RecipientAddress ». Voyons ce qui se passe :
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.
Le cmdlet Get-MessageTrace offre flexibilité et contrôle
Que vous ayez besoin de rechercher dans une plage de dates spécifique, d’identifier les traces de messages d’un expéditeur particulier, ou de suivre les traces de messages envoyés à un destinataire spécifique, la commande Get-MessageTrace offre la flexibilité et le contrôle dont vous avez besoin. De plus, la possibilité d’exporter les résultats vers un fichier CSV améliore votre capacité à analyser et documenter les schémas de communication par e-mail. En maîtrisant l’utilisation de la commande Get-MessageTrace, vous pouvez gérer efficacement le trafic e-mail et obtenir des informations précieuses sur les activités de communication de votre organisation.