Enumerating Disconnected Mailboxes
Using a graphical user interface
' This code enumerates disconnected mailboxes. ' ------ SCRIPT CONFIGURATION ------ strComputer = "<Exchange Server>" 'e.g. ExchServer2 ' ------ END CONFIGURATION --------- set objWMI = GetObject("winmgmts:\\" & strComputer & _ "\root\MicrosoftExchangeV2") set objDiscMbx = objWMI.ExecQuery("Select * from Exchange_Mailbox",,48) for each objMbx in objDiscMbx if (objMbx. DateDiscoveredAbsentInDS <> "") then Wscript.Echo objMbx.MailBoxDisplayName & " " & _ objMbx.DateDiscoveredAbsentInDS end if next Wscript.Echo "Successfully enumerated disconnected mailboxes."
When you tell the system to delete an Exchange mailbox, it isn't really deleted. It is simply disassociated or disconnected from the user object. These mailboxes are referred to as orphaned or disconnected. This recipe shows you how to enumerate the disconnected mailboxes you have on a specified server.
This is one of the occasions where a script is not only quicker than the corresponding GUI, but also much easier. There is no method to just enumerate disconnected mailboxes in ESM. You have to actually go down the list and look at every mailbox. If you have thousands of mailboxes, this could be quite tedious. If you have thousands of mailboxes across many servers, it can quickly become unmanageable.
The DateDiscoveredAbsentInDS property is part of the Exchange_Mailbox class, which is new for Exchange 2003.