Sylver SCHORGEN Blog's

Articles, astuces et news sur les technologies Microsoft et plus particulièrement tournant autour de Powershell

Bonjour tout le monde,

Ces derniers temps, je développe pas mal de script de statistiques pour des clients ou pour de l'interne. Récemment, j'ai eu besoin de créer un script qui permettait, en autre, de compter le nombre de mails reçus par un domaine spécifique. Ceci me permet de connaître le nombre de mails reçus durant les 7 derniers jours en provenance d'un domaine spécifique.

Commençons par la commande PowerShell permettant de récupérer la liste des mails envoyés par un domaine spécifique durant les 7 derniers jours :  

Get-MessageTrace -StartDate (Get-Date).Adddays(-7) -EndDate (Get-Date) -SenderAddress *@domaine.com

Cette commande dispose de plusieurs paramètres :

  • -StartDate (Get-Date).AddDays(-7) : Permet d'indiquer que la date de début correspond à celle d'il y a 7 jours
  • -EndDate (Get-Date) : Permet d'indiquer que la date de fin correspond à aujourd'hui
  • -SenderAddress *@domaine.com : Permet d'indiquer que nous cherchons tous les mails en provenance du domaine domaine.com

Une fois que nous avons ce résultat, il ne nous reste plus qu'à utiliser la propriété .Count de l'objet retourné pour connaître le nombre de mails total. La commande finale est donc celle-ci : (Get-MessageTrace -StartDate (Get-Date).Adddays(-7) -EndDate (Get-Date) -SenderAddress *@domaine.com).Count

On constatera ici que le domaine @domaine.com nous a envoyé 1 000 mails.

Facebook Like
  • Avec le bon script c'est mieux : 

    $AllEmails = $null
    For($j = 1; $j -le 10000; $j++)
    {
    $tmp = Get-MessageTrace -StartDate (Get-Date).Adddays(-7) -EndDate (Get-Date) -SenderAddress *@airfrance.com -PageSize 1000 -Page $j
    If($tmp.count -gt 0)
    {
    $AllEmails += $tmp
    }
    Else
    {
    Break
    }
    }
    $AllEmails.Count

  • Salut Sylver, je me permet de répondre car on est sur le blog de JS :), Pour information ta commande retourne 1000 car c'est la taille par défaut du pagesize. La commande pour retourner ce que tu cherches resemble plus à ça : 

    $AllEmails = $null
    For($j = 1; $j -le 1000; $j++)
    {
    $tmp = Get-MessageTrace -StartDate (Get-Date).Adddays(-7) -EndDate (Get-Date) -SenderAddress *@domaine.com
    If($tmp.count -gt 0)
    {
    $AllEmails += $tmp
    }
    Else
    {
    Break
    }
    }
    $AllEmails.Count 

    Alban.