PowerShell 経由ですべての Exchange 2013 メールボックスを検索する

PowerShell 経由ですべての Exchange 2013 メールボックスを検索する

電子メール アドレス/ドメインの長いリストがあり、いずれかのメールボックスにそれらのメールが受信されているかどうかを確認する必要があります。

GUI を使用して検索する方法は見つかりましたが、時間がかかりすぎます。Exchange 365 用の PowerShell コマンドは見つかりましたが、2013 用のものは見つかりませんでした。

次の形式でファイルに簡単に出力します...

address/domain,Yes|No

十分です。アドレス/ドメインのリストはテキスト ファイルから読み取る必要があります。

何かアイデアや例はありますか?


編集 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 が部分的なアドレスを処理するので簡単になるということです。

完全なスクリプトが手に入ったら、この回答を更新します。

関連情報