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