具有特定日期/时间范围的PowerShell脚本

时间:2013-04-01 15:28:03

标签: datetime powershell exchange-server

我正在尝试为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),但我无法弄清楚如何添加它。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分: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 
}

答案 1 :(得分:0)

get-messagetrackinglog cmdlet仅为-start和-end采用单个参数,因此您无法在单个命令中指定该参数。

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

答案 2 :(得分:0)

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

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

然后尝试

-start $past -end (get-date)