【发布时间】:2017-10-07 15:19:41
【问题描述】:
我正在编写一个 powershell 脚本,用于查询我们的 Exchange 服务器在几天的列表中每天数量的 SENT 电子邮件。
我想将结果输出到 excel 文件中,以便进行更多分析(数据透视表等)。
我遇到的问题是我好几天都在硬编码,但希望它能够灵活地运行几个月。
$StartTime = (Get-Date -Hour 00 -Minute 00 -Second 00).AddDays(-7),
$EndTime = (Get-Date -Hour 23 -Minute 59 -Second 59).AddDays(-1),
ForEach ($Email in $FilterArr) {
$MTL = Get-MessageTrackingLog -Start $StartTime -End $EndTime -EventId SEND -ResultSize Unlimited -Sender $Email.Email
[Int]$Day0Mail = ($MTL | Where-Object {($_.Timestamp -gt $ArrayStartDates[0]) -And ($_.Timestamp -lt (Get-Date $ArrayStartDates[0] -Hour 23 -Minute 59 -Second 59))}).Count
[Int]$Day1Mail = ($MTL | Where-Object {($_.Timestamp -gt $ArrayStartDates[1]) -And ($_.Timestamp -lt (Get-Date $ArrayStartDates[1] -Hour 23 -Minute 59 -Second 59))}).Count
...
$MailObj = New-Object -TypeName psobject -Property ([Ordered]@{
Name = $Email.Name
Email = $Email.Email
[String]$ArrayStartDates[0].ToShortDateString() = $Day0Mail
[String]$ArrayStartDates[1].ToShortDateString() = $Day1Mail
....
$ReportArr += $MailObj
}
$ReportArr | Export-Csv -NoTypeInformation -Path $ReportPath -Force
【问题讨论】:
-
...问题是什么?
-
说硬编码几天的位,我想将 StartTime 设置为 -180 天,并将其设置为“Just Work” TM
-
尝试将
-7更改为-180..? -
然后我要写 180 行 [Int]$Day0Mail =, [Int]$Day1Mail =, [Int]$Day2Mail =, [Int]$Day3Mail = ???然后如何将这些数字放入 $MailObj 并连接以通过 Excel/CSV 轻松输出。
-
啊哈!现在您的要求变得更加清晰!正如当前答案所暗示的那样:您需要一个循环。
标签: powershell exchange-server exchange-server-2013