
Tenho uma longa lista de endereços/domínios de e-mail e preciso verificar se alguma de nossas caixas de correio recebeu e-mails deles.
Posso descobrir como pesquisar usando a GUI, mas isso demorará muito. Foram encontrados comandos do PowerShell para o Exchange 365, mas nada para 2013.
Uma saída simples para um arquivo no formato ...
address/domain,Yes|No
é suficiente. A lista de endereços/domínios deverá ser lida em arquivo de texto.
Alguma idéia/exemplo?
EDIT 1: O seguinte, quando executado como administrador do domínio, funciona ...
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery from:<text> -estimateresultonly
mas me dá uma lista de todas as caixas de correio no seguinte formato:
RunspaceId : f21e1a-42c-4b7-559-90c643f18
Identity : <blah/blah>
TargetMailbox :
Success : True
TargetFolder :
ResultItemsCount : 1
ResultItemsSize : 26.71 KB (27,350 bytes)
Responder1
OK, depois de muito pesquisar no Google, isso vai me levar até lá. Preciso envolvê-lo em um loop, mas há muitos exemplos para isso.
[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
O bom é que o SearchQuery irá lidar com endereços parciais, o que facilita.
Atualizarei esta resposta assim que tiver o script completo.