2

我正在尝试为 Exchange 2010 运行 powershell 脚本,以从特定日期/时间范围中提取信息。

示例:显示周一至周五上午 6 点至晚上 11 点时间范围内收到的电子邮件数量

get-messagetrackinglog -resultsize unlimited -Recipient TEST@TEST.COM -Server EXCHANGE -Start "3/4/2013 6:00:00 AM" -End "3/6/2013 23:00:00 PM" | select messageid -unique | measure

但我想让日期范围不那么静态。所以如果我每周周五晚上 11 点运行脚本,我怎么能让它在过去 5 天里做这个查询。

我正在尝试添加,(get-date).adddays(-5)但我无法弄清楚如何添加它。

任何帮助将不胜感激。

4

3 回答 3

1

试试这个

for($i=-4,$i -lt 0,$i++){
    $start = (get-date -hour 6).adddays($i);
    $end = (get-date -hour 23).adddays($i);
    Write-host $start.DayoftheWeek  (get-messagetrackinglog -resultsize unlimited -Recipient TEST@TEST.COM -Server EXCHANGE -Start $start -End $end | select messageid -unique | measure).count 
}
于 2013-04-01T21:05:55.750 回答
0

get-messagetrackinglog cmdlet 只为 -start 和 -end 使用一个参数,因此您不能在单个命令中指定它。

您可以从早上 6 点到晚上 11 点对消息跟踪日志运行 5 个单独的查询,每个查询在不同的日期将这些结果汇总在一起,或者您可以对从第一天早上 6 点到最后一天晚上 11 点的所有日志进行一次查询,然后过滤在过渡时期的晚上 11 点到早上 6 点之间加上时间戳。

于 2013-04-01T15:47:15.187 回答
0

只是试图回答关于过去日期和时间的部分,并假设您在晚上 11 点运行此程序,但想回到早上 6 点(17 小时差异)......也许使用类似的东西:

$past=(Get-Date).adddays(-5).addhours(-17)

然后尝试

-start $past -end (get-date) 
于 2013-04-01T17:11:11.847 回答