
У меня есть длинный список адресов электронной почты/доменов, и мне нужно проверить, приходили ли письма с них на какой-либо из наших почтовых ящиков.
Я могу найти, как искать с помощью GUI, но это займет слишком много времени. Нашел команды powershell для Exchange 365, но ничего для 2013.
Простой вывод в файл в формате...
address/domain,Yes|No
достаточно. Список адресов/доменов придется считать из текстового файла.
Есть идеи/примеры?
EDIT 1: При запуске от имени администратора домена работает следующее...
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery from:<text> -estimateresultonly
но выдает мне список всех почтовых ящиков в следующем формате:
RunspaceId : f21e1a-42c-4b7-559-90c643f18
Identity : <blah/blah>
TargetMailbox :
Success : True
TargetFolder :
ResultItemsCount : 1
ResultItemsSize : 26.71 KB (27,350 bytes)
решение1
Хорошо, после долгого гугления это приведет меня туда. Мне нужно обернуть это в цикл, но есть много примеров для этого.
[PS] C:\>$t = (Get-Mailbox -ResultSize unlimited |
Search-Mailbox -SearchQuery from:@gmail.com -estimateresultonly |
measure-object -Property ResultItemsCount -Sum).Sum
WARNING: The Search-Mailbox cmdlet returns up to 10000 results per mailbox if a search query is specified. To return more than 10000 results, use the New-MailboxSearch cmdlet or the In-Place eDiscovery & Hold console in the Exchange Administration Center.
[PS] C:\>echo $t
30312
Хорошо то, что SearchQuery обрабатывает частичные адреса, что упрощает задачу.
Я обновлю этот ответ, как только получу полный сценарий.