首页 > 解决方案 > Office 365 电子邮件统计

问题描述

我正在尝试计算每个时期从特定电子邮件帐户发送和接收的电子邮件总数。该代码正在运行,但给出了一些夸大的结果。请查看下面的代码是否可以提供正确的结果。我知道我可以只使用一次 $Allmessages 而不用 SenderAddress 过滤,然后再用 RecipientAddress 过滤,但它会在没有过滤的情况下永远运行。

    $Allmessages_sent = @()  
    $P = 1  
    do  
   {
    $pagedmessages_sent = Get-MessageTrace -SenderAddress $emailgroup -StartDate $StartDate -EndDate $EndDate -PageSize 1000 -Page $p `
            | Select Received,SenderAddress,RecipientAddress,Size
    $Allmessages_sent += $pagedmessages_sent 
    $p = $p + 1  
   }  
    until ($pagedmessages_sent -eq $null)  
    $senderssorted = 0;
    $senderssorted = $Allmessages_sent |group senderaddress | select @{n="SentCount";e={$_.Count}} 
    $Allmessages_rcvd = @()  
    $P_ = 1  
   do  
   {  
    $pagedmessages_rcvd = Get-MessageTrace -RecipientAddress $emailgroup -StartDate $StartDate -EndDate $EndDate -PageSize 1000 -Page $p_ `
            | Select Received,SenderAddress,RecipientAddress,Size
    $Allmessages_rcvd += $pagedmessages_rcvd
    $p_ = $p_ + 1  
    }  
    until ($pagedmessages_rcvd -eq $null)  
    $recipientsorted = 0;
    $recipientsorted = $Allmessages_rcvd |group recipientaddress | select @{n="ReceivedCount";e={$_.Count}};
    $totalSent = 0; 
    $totalRsvd = 0;
    $totalSent = $senderssorted.Sentcount;
    $totalRsvd = $recipientsorted.ReceivedCount;
    $arrayResult = @();
    $arrayResult += $totalSent;
    $arrayResult += $totalRsvd
    Write-Host "Sent: " $arrayResult[0];
    Write-Host "Received: " $arrayResult[1];

谢谢

标签: powershell

解决方案


解决了。差异解释: - 总“收到”差异是由于“失败”状态电子邮件被计算在内。因此,我为“Get-MessageTrace -SenderAddress ...”和“Get-MessageTrace -RecipientAddress”这两个部分添加了 -Status 'Delivered'。- 总“已发送”差异是由于通过设置“规则”从我的邮箱中转发的电子邮件,我无法在 Outlook“已发送”文件夹中看到。


推荐阅读