こんにちは。
過去にPowerShell(.ps1)でMicrosoft Exchange Onlineに接続してメールボックス容量の使用率を集計する方法を投稿しましたが、最近その処理で次のようなエラーが発生しました。
...省略
[31;1mGet-MailboxStatistics: [31;1mEx838C9A|Microsoft.Exchange.Configuration.Tasks.ManagementObjectAmbiguousExcepti[0m
[31;1m[31;1mon|指定したメールボックス ID: "〇〇〇〇" が一意ではありません。[0m
[31;1mInvalidOperation: [0m/aaa/bbb/ccc.ps1:50[0m
...省略
前回同様いろいろと調べたり聞いたりしながら作業を進め、その対処法がわかったので今回はそれをご紹介したいと思います。
エラーの対処法
詳しくは以前の投稿をご覧いただきたいのですが、そこでは次のようなPowerShellのスクリプトでユーザーごとのメールボックス使用量を取得しています。
...省略
$total_size_list = Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited | Foreach{Get-MailboxStatistics -Identity $_.Identity | Select DisplayName,TotalItemSize}
...省略
こちらのGet-MailboxStatisticsのパラメータを$_.Identityから$_.LegacyExchangeDNに変更することでエラーが解消しました。
エラーの原因
エラーでは「Get-MailboxStatisticsで指定されたメールボックスのIDが重複しているよ」と読み取れました。
ここで言うIDはメールアドレスの@記号の左側を指しているようで、次のようなドメイン違いのメールアドレスがExchangeに登録されていたことで今回の結果となっていました。
- tarou@sample.com
- tarou@example.com
そのため、LegacyExchangeDNのような一意なパラメータを指定することで、上記のようなメールアドレスが登録されていても重複エラーになることなく処理されるようになるとのことでした。