Select Page

Voor een klant was ik op zoek naar een script om snel een overzicht te krijgen van de roaming profile size van alle gebruikers. Via Google kwam ik op het scripting blog van deludi

Op dit blog vond ik een script dat precies deed wat ik wilde. Snel en simpel een overzicht geven van de roaming profile grootte van alle AD gebruikers.
[source language=’vb’]’ Name : roamingprofilesize.vbs
‘ Description : script to enumerate the roaming profile size of all users in Active Directory
‘ Author : dirk adamsky – deludi bv
‘ Version : 1.00
‘ Date : 15-03-2010
‘ Level : intermediate

arrAttributes = Array(“profilePath”,”displayname”,”mail”)

Set adoCommand = CreateObject(“ADODB.Command”)
Set adoConnection = CreateObject(“ADODB.Connection”)
adoConnection.Provider = “ADsDSOObject”
adoConnection.Open “Active Directory Provider”
adoCommand.ActiveConnection = adoConnection

Set objRootDSE = GetObject(“LDAP://RootDSE”)
strBase = “
Set objRootDSE = Nothing

strFilter = “(&(objectCategory=person)(objectClass=user)(profilePath=*))”
strAttributes = Join(arrAttributes,”,”)
Wscript.Echo Join(arrAttributes,”;”) & ” ; roaming profile size in MB”
strQuery = strBase & “;” & strFilter & “;” & strAttributes & “;subtree”
adoCommand.CommandText = strQuery
adoCommand.Properties(“Page Size”) = 100
adoCommand.Properties(“Timeout”) = 30
adoCommand.Properties(“Cache Results”) = False
Set adoRecordset = adoCommand.Execute
Do Until adoRecordset.EOF
On Error Resume Next
strTempOutput = “”
For i = 1 To Ubound(arrAttributes)
strTempOutput = strTempOutput & ” ; ” & adoRecordset.Fields(arrAttributes(i)).Value
strOutput = Mid(Ltrim(strTempOutput),3)
Next
Wscript.Echo strOutput & ” ; ” & Foldersize (adoRecordset.Fields(arrAttributes(0)).Value) & ” MB”
adoRecordset.MoveNext
Loop
adoRecordset.Close
adoConnection.Close
Set adoRecordset = Nothing
Set adoConnection = Nothing
Set adoCommand = Nothing

Function Foldersize(strPath)
On Error Resume Next
Set objFSO = CreateObject(“scripting.filesystemobject”)
Set objFld = objFSO.GetFolder(strPath)
Foldersize = Round(objFld.Size/1048576,2)
Set objFld = Nothing
Set objFSO = Nothing
End Function
[/source]