2

首先,我在美国针对美国邮箱服务器运行此脚本。我要删除的邮件也是我已导出到 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'”之类的查询,这也不起作用。

4

1 回答 1

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
于 2014-04-23T20:10:57.153 回答