29 April 2010

Script: List all users in AD in a csv file

This script will list all users in AD in a csv file
Showing this:
SAM navn, Full name, Description, Office, OU placering
in file users.csv, createt in same folder as the script.

I'm using RootDSE, so no need for "hardcoding" domain name.

Scriptet:

' LIST_USERS.VBS
' ver. 1.0 - 070509
'
on error resume next
Set objRootDSE = GetObject("LDAP://RootDSE")
objDomain = objRootDSE.Get("defaultNamingContext")
set objConn = CreateObject("ADODB.Connection")
set objCmd = CreateObject("ADODB.Command")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
Set objCmd.ActiveConnection = objConn
objCmd.Properties("Cache Results") = False
strFilter = "(&(objectclass=user)(objectcategory=person))"
strQuery = ";" & strFilter & ";distinguishedName;subtree"
objCmd.CommandText = strQuery
Set objFSO=Createobject("Scripting.FileSystemObject")
objCSVfile = "Users.csv"
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8

if objFSO.FileExists(sUsersLeft) then
objFSO.deletefile(sUsersLeft)
end if

Set objLogFile = objFSO.CreateTextFile(objCSVfile)
objLogFile.Write("SAM Name, Display Name, Description, Office, OU" & chr(13) & chr(10))
Set objRecordSet = objCmd.Execute

Do Until objRecordSet.EOF
strDN = objRecordSet.Fields("distinguishedName")
Set objUser = GetObject("LDAP://" & strDN)
strsAMAccountName = objUser.sAMAccountName
strsdisplayName = objUser.displayName
strDescription = objUser.description
strOffice = objUser.physicalDeliveryOfficeName
strOU = objUser.distinguishedName
arrOU = split(strOU,",")
strOU = ""
for each i in arrOU
if left(i,2) = "OU" then
arrTmp = split(i,"=")
strOU=arrTmp(1) & "\" & strOU
end if
next
objLogFile.Write(strsAMAccountName & ", " & strsdisplayName & ", " & strDescription & "," & strOffice & "," & strOU & chr(13) & chr(10))
objRecordSet.MoveNext
Loop
objLogFile.close
objConn.Close
Set objGroup = Nothing
Set objRootDSE = Nothing
Set objCmd = Nothing
Set objConn = Nothing

No comments:

Post a Comment