Comment utiliser la commande PowerShell Get-MessageTrace dans Office 365

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).

Publicité

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

  1. 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.
  2. 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é.
  3. 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.
  4. 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
Using Connect-ExchangeOnline to get connected to your tenant (Image credit: Petri/Michael Reinders)

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.

Publicité

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"
Using the Get-MessageTrace cmdlet to trace email message flow (Image credit: Petri/Michael Reinders)

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.

Publicité

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"
We need to use UTC times when computing our search window! (Image credit: Petri/Michael Reinders)

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
We can go back a maximum of 10 days with PowerShell! (Image credit: Petri/Michael Reinders)

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]"
We can use ‘SenderAddress’ to narrow things down (Image credit: Petri/Michael Reinders)

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.

We can use Format-List to get even more details (Image credit: Petri/Michael Reinders)

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]"
We can also narrow things down by recipients of email (Image credit: Petri/Michael Reinders)

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"
You can also search by IP addresses amongst the SMTP servers in question (Image credit: Petri/Michael Reinders)

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
We can get more detail with the ‘Format-List’ (fl) cmdlet (Image credit: Petri/Michael Reinders)

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]
Using Get-MessageTraceDetail to get line-by-line detail for specific email messages (Image credit: Petri/Michael Reinders)

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
Exporting output to a CSV file (Image credit: Petri/Michael Reinders)

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
We can find the most active senders with some more PowerShell piping! (Image credit: Petri/Michael Reinders)

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
Similarly, we can find the users receiving the most email (Image credit: Petri/Michael Reinders)

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.

Source:
https://petri.com/powershell-get-messagetrace/