我一直在使用 Microsoft Exchange Server 2010 SP2。我想删除特定日期范围内的用户邮件。我该怎么做?顺便说一句,当我运行以下命令时,我得到了以下错误。
Search-Mailbox -Identity xxxxx -SearchQuery "Received:> $('01/01/2009') and Received:< $('12/31/2009')" -DeleteContent
这是我的错误信息:
A search keyword should not be preceeded with comparison modifiers eg. '<', '>', '='.
+ CategoryInfo : InvalidArgument: (:) [], ParserException
+ FullyQualifiedErrorId : 61B67608
更新 :
正如你提到的,我已经逐字逐句地回复了你的评论。但是,
尽管用户的邮箱中有大约6000封电子邮件,但它按照命令返回了18封电子邮件。
Search-Mailbox -Identity xxxxxxx -SearchQuery {((Received -lt '01 Oct 2009') -and (Received -gt '01 Aug 2013'))} -TargetMailbox targetmailbox -TargetFolder testxx -LogOnly
答案1
错误的原因是因为特殊字符没有被转义。最简单的方法是使用双引号而不是单引号将值括起来。此外,如果您想使用日期范围,则可以使用“..”运算符。 http://msdn.microsoft.com/en-us/library/office/ee558911(v=office.15).aspx#kql_property_restriction_queries
所以Search-Mailbox xxxxx -SearchQuery "Received:(1/1/2009..12/31/2009)"
这将搜索 2009 年 1 月 1 日 12:00 上午 至 2009 年 12 月 31 日 12:00 上午之间收到的所有邮件。
答案2
我使用的是同一版本的 Exchange2010,使用 {} 与不使用 {} 时的语法不同
搜索邮箱 -identity xxxxx -searchQuery {收到:>2008 年 12 月 31 日并且收到:<2010 年 1 月 1 日} -TargetMailbox targetmailbox -TargetFolder testxx -LogOnly
或者
搜索邮箱 -identity xxxxx -searchQuery 收到:>2008 年 12 月 31 日,收到:<2010 年 1 月 1 日 -TargetMailbox targetmailbox -TargetFolder testxx -LogOnly
如果需要删除,请将 -LogOnly 替换为 -DeleteContent,这本质上是做同样的事情