交换自动化脚本

Exchange Automation Script

我正在尝试为 Exchange 编写一个 powershell 脚本,它将查找特定邮箱在 1 个月的时间范围内收到的电子邮件数量,并将这些对象总数通过电子邮件发送给特定的个人。到目前为止我得到了:

$date = Get-Date -Format MM/dd/yyyy
$time = Get-Date -Format HH:mm:ss
$previousMonth = 

PS C:\> Get-MessageTrackingLog -Recipients:mailbox1.org -start "02/01/2017 00:00:00" -end "$date $time" -EventId "Receive" -ResultSize unlimited | Measure-Object
PS C:\> Get-MessageTrackingLog -Recipients:mailbox2.org -start "02/01/2017 00:00:00" -end "$date $time" -EventId "Receive" -ResultSize unlimited | Measure-Object
PS C:\> Get-MessageTrackingLog -Recipients:mailbox3.org -start "02/01/2017 00:00:00" -end "$date $time" -EventId "Receive" -ResultSize unlimited | Measure-Object
PS C:\> Get-MessageTrackingLog -Recipients:mailbox4.org -start "02/01/2017 00:00:00" -end "$date $time" -EventId "Receive" -ResultSize unlimited | Measure-Object
ps c:\> Send-MailMessage  -SmtpServer "server" -To "recipient email<recipient email>" -From "Monthly Mailbox Totals <email address>" -Subject "Monthly Mailbox Item Count"  -Body ""

我遇到的问题是:我不太明白如何计算 -start 输入的日期范围以从当前日期和时间获取上个月的第一天,其次我被困在如何将总计从这种格式化到发送的电子邮件正文中。如果有帮助的话,我希望这个脚本在每个月的第一天 运行。

如有任何提示,我们将不胜感激。提前致谢。

System.DateTime 有一个函数 AddX(天、小时、分钟等)。有了这些,您可以指定一个确切的时间范围。然后,您只需将 Get-MessageTrackingLog 的返回值相加,然后将变量的内容发送出去。

$StartDate = (Get-Date).AddDays(-14) #Get the last 2 Weeks
$EndDate = Get-Date
$i = 0
$ += (Get-MessageTrackingLog -Recipients "RecipientA" -Start $StartDate -End $EndDate -EventId "Receive" -ResultSize unlimited | measure).Count
$ += (Get-MessageTrackingLog -Recipients "RecipientB" -Start $StartDate -End $EndDate -EventId "Receive" -ResultSize unlimited | measure).Count
Send-MailMessage -SmtpServer "server" -To "recipient" -From "sender" -Subject "Mailcount" -Body "Mail count for this month is $i"

如果您需要自己灵活地设置时间范围,您可以简单地使用类型加速器将您的日期字符串转换为 DateTime

$StartDate = [DateTime]"3.10.17"