DeleteContent没有正确删除项目/根本没有

时间:2014-04-23 19:54:35

标签: powershell exchange-server-2010 exchange-server-2013

首先,我在美国针对美国邮箱服务器运行此脚本。我想要删除的邮件也是我导出到PST的邮件。

邮箱导出使用ContentFilter,而deleteContent使用SearchQuery。这两种抓取信息的行为似乎与我的行为截然不同。

我已经成功地将我想要的邮件导出到PST,但删除内容一直是​​一个巨大的问题。

我正在尝试使用下面的代码删除当前get-date之前的邮箱项目。我发誓我一直在关注微软的文档,但是没有什么对我有用。

$date = (get-date -hour 00 minute 00 second 00).ToShortDateString()
Search-Mailbox -Identity "id" -SearchQuery "Received:<$($date)" -deleteContent -force

这不起作用。我收到一个错误:

The property keyword isn't supported.
    + CategoryInfo          : InvalidArgument: (:) [], ParserException

请修改下面的编辑,因为我修复了字符串,但问题仍然存在。好像<似乎弄乱了查询。


修改

"Received:<'$date'" - 当我将其指定为SearchQuery时执行,但是没有结果返回。

似乎<正在弄乱我的查询。删除<并将查询保留为"Received:'$date'"后,它会删除当天的所有电子邮件。

此外,这样做时间似乎偏移了5个小时。我在美国,我运行的邮箱服务器在美国,但它仍然表现得像是在使用UTC时间。我该如何解决?但更重要的是,为什么我的工作不是很好。


编辑2:

我还尝试过查询“收到-lt'$ date'”,这也不起作用。

1 个答案:

答案 0 :(得分:4)

尝试:$date.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")

虽然以上将为您提供ISO 8601日期时间,但它看起来不像搜索查询正在使用完整的东西。我确实发现以下语法似乎至少适用于日期部分:

$date = (get-date).Date.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
Search-Mailbox -Identity "id" -SearchQuery "Received<$date" -deleteContent -force

SearchQuery参数使用的是KQL,其记录在:http://msdn.microsoft.com/en-us/library/office/ee558911(v=office.15).aspx

不幸的是,由于Exchange似乎忽略了时间部分,我猜这将仅限于UTC午夜过滤。查看文档,有简写可以给你相同的结果:

Search-Mailbox -Identity "id" -SearchQuery "Received<today" -deleteContent -force