Recipe 5.8. Determining the Size of a MailboxProblemYou want information about how many items are in a mailbox and how much space it occupies. SolutionUsing a graphical user interface
Using VBScript' This code lists the size of all mailboxes on the selected server. ' ------ SCRIPT CONFIGURATION ------ strComputerName = "<ServerName>" ' e.g., batman strE2K3WMIQuery = "winmgmts://" & strComputerName &_ "/root/MicrosoftExchangeV2" ' ------ END CONFIGURATION --------- ' Find each mailbox on the target server and report their ' item counts and sizes Set mboxList = GetObject(strE2K3WMIQuery).InstancesOf("Exchange_Mailbox") For each mailbox in mboxList strOutput = "" strOutput = "Mailbox: " & mailbox.MailboxDisplayName & vbCRLF strOutput = strOutput & " " & mailbox.Size & "KB in " &_ mailbox.TotalItems & " items" & vbCRLF WScript.Echo strOutput Next DiscussionThe code to find mailbox size is very similar to the code used to retrieve access and logon information. The mailbox size and item count are directly exposed via WMI in Exchange Server 2003, so they're easy to get. Unfortunately, if you want to get the same information without WMI, you're consigned to using MAPI: you'll need to write a script that locates all the mailboxes (easy, given what you've learned in this chapter), then logs on to each one using MAPI to retrieve the mailbox size and item count properties. There are two big problems with this approach: one is that logging in updates the last logon time and user, and the other is that you have to run such a script with an account that has read access to all the mailboxes you're scanning. For those reasons, we haven't included the script here. See AlsoRecipe 5.7 for getting mailbox logon information and MSDN: Exchange_Mailbox class |