Почему ваш код не работает:
Search-Mailbox myID -SearchQuery Received:<get-date -deleteContent -force
Это не работает, потому что get-date
анализируется как литеральная строка; вы не интерполируете результаты командлета Get-Date. -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, но в на самом деле дата в запросах Search-Mailbox должна быть в формате, соответствующем региональным настройкам сервера Exchange.
Как это сделать:
Вы можете обойтись простой интерполяцией результатов Get-Date:
Search-Mailbox id_attribute -SearchQuery "Received:<$(Get-Date)" -DeleteContent -Force
Однако это будет работать только в том случае, если формат, используемый при интерполяции объекта DateTime в строку (то есть MM/dd/yyyy HH:mm:ss
), соответствует региональному формату. Чтобы убедиться, что вы получаете правильный формат, используйте Get-Culture, чтобы определить правильную строку формата, и укажите ее в -Format Get-Date. параметр:
Если вы хотите использовать сегодняшнюю дату, вы можете использовать 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
Я не предоставил это как часть ответа, потому что в предыдущей (удаленной) версии вопроса ОП специально спрашивал, как искать в сообщениях до точного времени, а today
- это просто текущая дата без времени.
person
Adi Inbar
schedule
24.04.2014