【问题标题】:Search-mailbox dynamic date搜索邮箱动态日期
【发布时间】:2019-11-07 21:50:30
【问题描述】:

我是新手,希望有人可以帮助我!

我必须删除超过 x 个月且有 subject:test 的电子邮件,我对 powershell 感到疯狂,这是问题所在:

$time  = (Get-Date).AddDays(33).ToShortDateString()
$Varible = "test"
$Search = [scriptblock]::create("{received<=$($till) AND subject:$Varible}")

echo $search 
## Result: 'received<=9/1/2018 AND subject:1234'

1) -> 不工作(itemcount 0)

Search-Mailbox -Identity s@test.at -searchquery "$($search)" -DeleteContent 

2) 工作:

Search-Mailbox -Identity s@test.at -searchquery {received<=9/1/2018 AND subject:test} -DeleteContent

变量搜索就是上面搜索邮箱1行中设置的输出。

提前谢谢

【问题讨论】:

    标签: powershell exchange-server


    【解决方案1】:

    -SearchQuery 需要String,而不是ScriptBlock (check the documentation):

    SearchQuery 参数指定搜索字符串或使用关键字查询语言 (KQL) 格式化的查询。

    因此您的查询应如下所示:

    [string]$Search = "received<=$time AND subject:$Varible"
    

    另外,还有一些针对您提供的代码的其他评论:

    • 您混合了两个变量:您将日期分配给 $time 并在查询中使用 $till
    • 如 cmets 中提到的@LotPings(现已删除)AddDays(33) 将产生未来日期,您应该使用的是AddDays(-33)
    • 通常,将日期转换为String 通常不是好习惯,因为您无法对其执行其他操作。但是,在这种特殊情况下,转换是可以的,因为您最终将 String 提供给命令

    【讨论】:

      【解决方案2】:

      嘿,尝试使用支持的日期间隔:

      https://docs.microsoft.com/en-us/sharepoint/dev/general-development/keyword-query-language-kql-syntax-reference 表 4. 日期间隔保留关键字

      日期间隔名称说明

      今天 表示从当天开始到当天结束的时间。

      昨天 表示从一天的开始到当天前一天结束的时间。

      本周 表示从本周开始到本周结束的时间。在确定一周的第一天时会考虑制定查询文本的文化。

      本月 表示从当月月初到当月月底的时间。

      上个月 表示当前月份之前的整个月份。

      今年 表示从当年年初到年末的时间。

      去年 表示当前年份之前的整年。

      -SearchQuery 'sent:"last month"'
      

      【讨论】:

        猜你喜欢
        • 2021-05-01
        • 2020-12-05
        • 1970-01-01
        • 2014-06-10
        • 2012-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-12
        相关资源
        最近更新 更多