搜索邮箱动态日期

时间:2018-07-30 17:17:24

标签: powershell exchange-server

我是新来的,希望有人能帮助我!

我必须删除超过x个月且具有nodejs-sdk的电子邮件,我对Powershell感到疯狂,这是问题所在:

subject:test
  

1)->不起作用(项目计数0)

$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'
  

2)工作:

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

变量搜索正是其在上方搜索邮箱1行中设置的输出。

提前

2 个答案:

答案 0 :(得分:0)

-SearchQuery需要String,而不是ScriptBlockcheck the documentation):

  

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

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

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

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

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

答案 1 :(得分:0)

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

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

日期间隔名称说明

今天

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

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

这周     表示从当前周开始到当前周结束的时间。要确定一周中的第一天,必须考虑制定查询文本的区域性。

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

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

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

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

-SearchQuery 'sent:"last month"'