【问题标题】:PowerShell script with specific date/time range具有特定日期/时间范围的 PowerShell 脚本
【发布时间】:2013-04-02 05:13:18
【问题描述】:

我正在尝试为 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),但我不知道如何添加。

任何帮助将不胜感激。

【问题讨论】:

    标签: datetime powershell exchange-server


    【解决方案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 
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        然后试试

        -start $past -end (get-date) 
        

        【讨论】:

        • 你的意思可能是相反的:-Start $past -End (Get-Date)
        猜你喜欢
        • 2014-06-15
        • 1970-01-01
        • 1970-01-01
        • 2019-12-12
        • 1970-01-01
        • 1970-01-01
        • 2021-03-27
        • 1970-01-01
        相关资源
        最近更新 更多