こんにちは、Exchange サポート チームの竹本です。
今回は、メールボックスの無効化時や再接続時に役に立つコマンド、Clean-MailboxDatabase についてご案内します。
Exchange Server 2010 への移行や運用を行っていただいている中で、以下のような現象に遭遇されたことはありませんでしょうか。
・ メールボックスを無効化したのに、Exchange 管理コンソール上 "切断されたメールボックス" に表示されない
・ 切断されたメールボックスを再接続したのに、まだ "切断されたメールボックス" に表示されたままの状態が解消されない
上記のような現象が発生する多くの場合、対象のメールボックスにおいては AD上の情報と Exchange ストア上の情報に、不整合な状態が発生しています。
例えば、メールボックスの切断 (Disable-Mailbox) を行った場合、まず接続先のユーザー アカウントに対して Exchange 関連属性を削除する処理が行われます。そして続けて、メールボックス サーバーはドメイン コントローラーを参照し、ストア上のそのメールボックスに関する情報を更新する処理を行います。この時、AD の構成や複製状況によっては、ストアが参照したドメイン コントローラーに最新の結果 (無効化した後の状態) が反映されていない場合があり、このような場合ストア内のデータは更新されず、結果として "AD 上は無効化されているが、ストア内では有効なまま" といった状況に至ることがあります
またこのような現象は特に、メールボックス サーバーとは別サイトのドメイン コントローラーに対して Disable-Mailbox 等のコマンドレットを実行した場合等に発生します。
そしてこの不整合な状態を解消するためのコマンドが Clean-MailboxDatabase です。
このコマンドを実行することで AD 上の情報の再スキャンが実施され、必要に応じてストア内の情報についても再更新が行われるため、不整合な状態を解消することができます。
Clean-MailboxDatabase -id <データベース名>
是非、お試しいただければと思います。
* コマンド名からは DB の情報を削除するような印象をうけますが、あくまでもメールボックスの不整合な状態を解消するためのコマンドになりますので、ご安心ください。
Clean-MailboxDatabase については、以下も併せてご参照ください。
Title : Clean-MailboxDatabase
URL : http://technet.microsoft.com/ja-jp/library/bb124076(v=exchg.141).aspx
なおメールボックスを作成後、一度もログオンしていない場合や一通のメールも受信していないような場合、このメールボックスを無効化しても "切断されたメールボックス" には表示されません。これはストア内にメールボックスの実体がないことが要因となり、Clean-MailboxDatabase を実行しても解消されませんので、ご注意ください。
(2014/04/25 Update)
Exchange Server 2013 では Clean-MailboxDatabase コマンドが提供されておりませんが、新しく Update-StoreMailboxState コマンドをご利用いただけるようになりました。
Exchange Server 2013 でも、Exchange Server 2010 と同様に AD上の情報と Exchange ストア上の情報に不整合な状態が発生することがありますので、そのような時は Update-StoreMailboxState コマンドを使用して対応することが出来ます。
Update-StoreMailboxState コマンドを使用すると、AD 上の情報の再スキャンとストア内の情報の更新を、Clean-MailboxDatabase コマンドと同じように特定のデータベースに対して行うだけでなく、特定のメールボックスに対して実行することが可能です。
それぞれの方法についてご紹介いたします。
- 特定のデータベースに対して実行する方法
Clean-MailboxDatabase コマンドと同じように特定のデータベースに対して AD 上の情報の再スキャンとストア内の情報の更新を行うには、以下のようにコマンドを実行します。
Get-MailboxStatistics -Database "<メールボックス データベース名>" | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$false }
- 特定のメールボックスに対して実行する方法
特定のメールボックスが切断されたメールボックスとして表示されないような状況では、該当のメールボックスに対してのみ Update-StoreMailboxState コマンドを実行することが出来ます。
メールボックスは GUID で指定します。特定のメールボックスに対して AD 上の情報の再スキャンとストア内の情報の更新を行うには、初めにメールボックスの GUID を取得してから、Update-StoreMailboxState コマンドを実行します。
以下の例では特定のメールボックスが切断されたメールボックスとして表示されていない状況を想定して、ユーザーの表示名を条件にしてメールボックスの GUID を取得しています。
1. 以下のコマンドを実行し、対象のメールボックスの GUID を取得します。
Get-MailboxDatabase "<データベース名>" | Get-MailboxStatistics | Where-Object {$_.DisplayName -eq "<ユーザーの表示名>"} | fl DisplayName,MailboxGuid
例)
Get-MailboxDatabase "MDB01" | Get-MailboxStatistics | Where-Object {$_.DisplayName -eq "マイクロ 太郎"} | fl DisplayName,MailboxGuid,Database
----- 出力例 -----
DisplayName : マイクロ 太郎
MailboxGuid : 1b50af77-eb02-443f-a29d-5fd327f6b015
Database : MDB01
----- ここまで -----
なおメールボックスがどのデータベースにあるか不明な場合は、"<データベース名>" を省略することですべてのデータベース内のメールボックスから該当のメールボックスの情報を探すことが可能です。
2. 前の手順で確認した GUID を使用して、以下のように Update-StoreMailboxState コマンドを実行します。
Update-StoreMailboxState -Identity "<GUID>" -Database "<データベース名>" -Confirm:$False
例)
Update-StoreMailboxState -Identity "1b50af77-eb02-443f-a29d-5fd327f6b015" -Database "MDB01" -Confirm:$False
Update-StoreMailboxState コマンドについては、以下も併せてご参照ください。
Title : Update-StoreMailboxState
URL : http://technet.microsoft.com/ja-JP/library/jj860462(v=exchg.150).aspx
今後も当ブログおよびサポート チームをよろしくお願いいたします。