为什么您的代码不起作用:
Search-Mailbox myID -SearchQuery Received:<get-date -deleteContent -force
这不起作用,因为get-date 被解析为文字字符串;您没有插入 Get-Date cmdlet 的结果。 -SearchQuery 是一个字符串参数,PowerShell 将字符串参数的参数隐式解释为双引号字符串。要插入 Get-Date 的结果,请使用 -SearchQuery Received:<$(Get-Date)。
Search-Mailbox whism_j -SearchQuery "Received:<$((get-date).toString("yyyy-MM-ddTHH:mm:ssZ"))" -deleteContent -force
这不起作用,因为日期格式无效。您可能会推断它应该基于 AQS documentation,但实际上 Search-Mailbox 查询中的日期需要采用符合 Exchange 服务器区域设置的格式。
怎么做:
您可能只需插入 Get-Date 的结果即可:
Search-Mailbox id_attribute -SearchQuery "Received:<$(Get-Date)" -DeleteContent -Force
但是,这仅在将 DateTime 对象插入字符串时使用的格式(MM/dd/yyyy HH:mm:ss)与区域格式匹配时才有效。为确保您获得正确的格式,请使用 Get-Culture 确定正确的格式字符串,并将其提供给 Get-Date 的 -Format 参数:
如果您想使用今天的日期,可以使用 Get-Date,然后按照 RickH 的建议将其转换为字符串,但这不是必需的,因为 AQS 支持命名的相对日期,包括今天:
$format = (Get-Culture).DateTimeFormat.ShortDatePattern + ' ' + (Get-Culture).DateTimeFormat.LongTimePattern
Search-Mailbox myID -SearchQuery "Received:<$(Get-Date -Format $format)" -DeleteContent -Force
请注意,正如我上面所说的那样,如果参数不包含不在括号内的空格,则外部双引号不是绝对必要的,但我认为包含它们是一种好习惯.
为了完整性和未来搜索者的利益,值得一提的是,AQS 还接受命名的相对日期,例如 today、this week 或 last month,所以这也应该有效:
Search-Mailbox id_attribute -SearchQuery "Received:<today" -DeleteContent -Force
我没有将其作为答案的一部分提供,因为在该问题的先前(已删除)版本中,OP 专门询问如何在确切时间之前从消息中搜索,而 today 只是当前日期,没有时间。