'Script to enumerate users (total Mailboxes) in Excahnge SGs and DBs, 'also gets detailed informaiton (excel format) of each user: Servername; SG; DB; MailboxName; Size; Total Emails 'Authour: Felipe Ferreira fel.h2o(a)gmail.com 'Date: 20/08/2007 updated 16/10/09 'Version 3.0 'TODO: 'Get SGs and DBs from function parameters - OK 'filtro será sobre o Display Name do usuario - OK 'Lembrar de criar o diretorio \log Option Explicit Dim t1, runtime,k,i,SG,DB,SGp,DBp, count, tcount, dcount,filtro Dim strScriptFile, strScriptPath, strComputer Dim objWMIService, colItems, objItem strScriptFile = WScript.ScriptFullname strScriptPath = Left(strScriptFile, Len(strScriptFile) - Len(WScript.Scriptname)) 'used to define the path from where the script file is located Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject") Dim oFile2 : Set oFile2 = objFSO.CreateTextFile(strScriptPath & "\EnumMBX_Totals_" & day(now) & "_" & month(now) & "_" & year(now) & " .txt", True) t1 = Timer 'time the script tcount = 0 dcount = 0 filtro = "RECURSO HUMANOS" 'ARQUIVO UNICO COM USUARIOS FILTRADOS, Dim objTextFile2 : Set objTextFile2 = objFSO.CreateTextFile(strScriptPath & "\" & filtro & "_" & day(now) & "_" & month(now) & "_" & year(now) & " .txt", True) objTextFile2.WriteLine "Usuarios " & filtro objTextFile2.WriteLine "Servername; SG; DB; MailboxName; Size; Total Emails" Dim objTextFile : Set objTextFile = objFSO.CreateTextFile(strScriptPath & "\TodosMbx_" & day(now) & "_" & month(now) & "_" & year(now) & " .txt", True) objTextFile.WriteLine "Servername; SG; DB; MailboxName; Size; Total Emails" 'MAIN CALLS call getMbxInfo("infogmail","First Storage Group","Managers") call getMbxInfo("infogmail","First Storage Group","Redacao (INFOGMAIL)") call getMbxInfo("infogmail","First Storage Group","Users10") call getMbxInfo("infogmail","SecondStorageGroup","Users1") call getMbxInfo("infogmail","SecondStorageGroup","Users2") call getMbxInfo("infogmail","SecondStorageGroup","Users9") call getMbxInfo("infogmail","ThirdStorageGroup","Users3") call getMbxInfo("infogmail","ThirdStorageGroup","Users4") call getMbxInfo("infogmail","ThirdStorageGroup","Users5") call getMbxInfo("infogmail","FourthStorageGroup","Users6") call getMbxInfo("infogmail","FourthStorageGroup","Users7") call getMbxInfo("infogmail","FourthStorageGroup","Users8") RunTime = Timer - t1 RunTime = Left(RunTime, 4) RunTime = RunTime / 60 RunTime = Left(RunTime, 4) wscript.echo VbCrLf & strComputer & ";" & SGp & ";" & DBp & "; Total Mailbox: " & tcount & " in: " & RunTime & "min." & VbCrLf wscript.echo "Total de " & filtro & " Mailboxes: " & dcount 'CLEANUP objTextFile.Close objTextFile2.Close Set objTextFile= Nothing Set objTextFile2= Nothing wscript.quit sub getMbxInfo(server,sg,db) On Error Resume Next strComputer = server Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & _ "\ROOT\MicrosoftExchangeV2") 'FORMAT DB AND SG NAMES SGp = "'" & SG & "'" DBp = "'" & DB & "'" 'QUERY SERVER JUST EACH SG DBs Set colItems = objWMIService.ExecQuery _ ("Select * from Exchange_Mailbox WHERE ((StoreName="& DBp &") And (StorageGroupName="& SGp &"))") wscript.echo VbCrLf & strComputer & " SG: " & SGp & " DB: " & DBp & " Please wait" 'PULL INFO For Each objItem in colItems objTextFile.WriteLine(objItem.ServerName & ";" & objItem.StorageGroupName & ";" & objItem.StoreName & ";" & objItem.MailboxDisplayName & ";" & objItem.Size & ";" & objItem.TotalItems) 'FILTRO if instr(objItem.MailboxDisplayName, filtro) then objTextFile2.WriteLine(objItem.ServerName & ";" & objItem.StorageGroupName & ";" & objItem.StoreName & ";" & objItem.MailboxDisplayName & ";" & objItem.Size & ";" & objItem.TotalItems) dcount = dcount + 1 end if count = count + 1 Wscript.StdOut.Write(".") Next oFile2.writeline strComputer & ";" & SGp & ";" & DBp & ";" & count tcount = tcount + count count = 0 end sub