powershell - 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];
谢谢
解决方案
解决了。差异解释: - 总“收到”差异是由于“失败”状态电子邮件被计算在内。因此,我为“Get-MessageTrace -SenderAddress ...”和“Get-MessageTrace -RecipientAddress”这两个部分添加了 -Status 'Delivered'。- 总“已发送”差异是由于通过设置“规则”从我的邮箱中转发的电子邮件,我无法在 Outlook“已发送”文件夹中看到。
推荐阅读
- javascript - TypedJs 库在浏览器控制台中出现 DevTools 错误
- php - 如何检查对象的变量是否为空?
- python - TensorFlow 警告:您的 CPU 支持未编译此 TensorFlow 二进制文件以使用的指令:AVX2 FMA
- java - BOOT-INF/lib 中的一个 jar 中可用的类的 ClassNotFoundException
- c# - Windows 身份验证和本地数据库用户身份验证
- angularjs - 正则表达式空字符串或数字
- python-3.x - 如何加速 cplex 解决方案池?
- c++ - 将多资源添加到 c++ 并将它们提取到临时文件夹以使用
- java - 为什么链接列表合并功能在 Java 中不起作用?
- vb.net - 如何从另一个类中的另一个函数访问新的实例化类方法?