DeleteContent根本没有正确删除项目



为了开始这一切,我在美国针对美国邮箱服务器运行此脚本。我要删除的邮件也是我已导出到PST的邮件。

邮箱Export使用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:

我还尝试过执行诸如"Received-lt'$date'"之类的查询,但这也不起作用。

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

虽然上面的内容将为您提供ISO8601日期时间,但搜索查询似乎并没有使用完整的内容。我确实发现以下语法似乎至少对日期部分有效:

$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

最新更新