Mailbox Cleanup After Cross Organizational Moves


I thought I would share some code I wrote for doing bulk mailbox cleanups on Exchange 2003 for cross-organizational mailbox moves.  This code is nearly identical to that in my previous post, but this one takes an input file to process several mailboxes at once.  The input file must be tab-separated and contain the distinguished name in the first column and the smtp email address in the second.  No headers are necessary on the input file.



'*******************************************************************************


'*** Declare Variables


'*******************************************************************************


Dim oFS                    '*** Object variable for file system object


DIM strUserDN        '*** This is the distinguished name of the user (string)


DIM objUser          '*** Object variable for containing the user


DIM strEmailAddr     '*** This becomes the external-to-exchange email address that mail is forwarded to


DIM sFile            '*** String variable that holds the file name to open from the parameters


DIM oArgs            '*** Array Variable to hold parameter objects


DIM iFile            '*** Object variable that links to the file object being opened


DIM Values           '*** Holds the CSV values in an Array


'*******************************************************************************


'*** Initialize and Declare Variables and Parameters


'*******************************************************************************


On Error Resume Next


 


'*** Grab the file name from the arguments command line


Set oArgs = wscript.arguments


sFile = oArgs(0)


 


'*** Open the file, check the file, make sure it is valid format


Set oFS = CreateObject("Scripting.FileSystemObject")


Set iFile = oFS.OpenTextFile(sFile, 1)


 


'*** Loop through the file, and reset all mailbox properties


 


Do Until iFile.AtEndofStream


Do                                '*** Inner Do Loop


       Err.Clear


       Values = Split(iFile.Readline, Chr(9))


 


       '*** Set variables


       strUserDN = Values(0)


       strEmailAddr = Values(1)


 


       '*** Connect to the user and disable mailbox


       wscript.echo "Connecting to user " & strUserDN 


       Set objUser = GetObject("LDAP://" & strUserDN)


 


       If Err<>0 Then


              wScript.Echo "[ERROR] - COULD NOT BIND TO OBJECT " & strUserDN & ".  sKIPPING USER"


              wScript.Echo ".... " & Err.Description


              Exit Do


       End If


 


       wscript.echo ".... Removing mailbox"


       objUser.DeleteMailBox


       objUser.SetInfo()


 


       If Err<> 0 Then


              wScript.echo "[ERROR] - COULD NOT DELETE EXISTING MAILBOX.  ABORTING CONVERSION"


              wScript.Echo ".... " & Err.Description


              wScript.echo ".... Original Mailbox should be intact for user."


              Exit Do


       End If


      


       wscript.echo ".... setting email address: " & strEmailAddr


       objUser.MailEnable strEmailAddr


       objUser.Put "internetEncoding",1310720


       objUser.SetInfo()


      


       If Err<> 0 Then


              wScript.Echo "[ERROR] - COULD NOT MAIL-ENABLE USER."


              wScript.Echo ".... " & Err.description


              wScript.Echo "Mailbox has been disabled, but user is not in a mail-enabled state."


       End If


 


       Exit Do


Loop                              '*** Inner Do Loop


Loop

Comments (0)

Skip to main content