60 pts.
 AD user details
Hi, I want to write a utility which will read users Details from the Active Directory and dump it in a database which will be used for other applications. How do i do this ? Thanks

Software/Hardware used:
ASKED: December 18, 2007  8:49 AM
UPDATED: June 25, 2011  12:44 PM

Answer Wiki:
Using VBScript to Export All Objects in an OU (this OU is called Marketing) Use a text editor such as Notepad to create a VBScript program. The script searches the Marketing OU and creates a text file that lists all of the user objects and a subset of their attributes. To create the export script Copy the following text into your text editor: 'Global variables Dim oContainer Dim OutPutFile Dim FileSystem 'Initialize global variables Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject") Set OutPutFile = FileSystem.CreateTextFile("marketing.txt", True) SetoContainer=GetObject("LDAP://OU=marketing,DC=reskit,DC=com") 'Enumerate Container EnumerateUsers oContainer 'Clean up OutPutFile.Close Set FileSystem = Nothing Set oContainer = Nothing WScript.Echo "Finished" WScript.Quit(0) Sub EnumerateUsers(oCont) Dim oUser For Each oUser In oCont Select Case LCase(oUser.Class) Case "user" If Not IsEmpty(oUser.distinguishedName) Then OutPutFile.WriteLine "dn: " & oUser.distinguishedName End If If Not IsEmpty(oUser.name) Then OutPutFile.WriteLine "name: " & oUser.Get ("name") End If 'need to do this because oUser.name would get back the Relative Distinguished name (i.e. CN=Jo Brown) If Not IsEmpty(oUser.st) Then OutPutFile.WriteLine "st: " & oUser.st End If If Not IsEmpty(oUser.streetAddress) Then OutPutFile.WriteLine "streetAddress: " & oUser.streetAddress End If Case "organizationalunit" , "container" EnumerateUsers oUser End Select OutPutFile.WriteLine Next End Sub Save the file as Export.vbs. At the command prompt type export.vbs and press Enter. This creates a file named Marketing.txt, which contains a list of users and some of their attributes, such as distinguished name, name, state, and street address. With appropriate modification, this script can be used with any application that supports COM and Visual Basic technologies. Such applications include Microsoft Visual Basic, Microsoft Excel, and Microsoft Access. Scripting can also be hosted by Internet Explorer and Internet Information Services 5.0, which is part of Windows 2000 Server.
Last Wiki Answer Submitted:  December 18, 2007  9:34 am  by  B00M3R   1,190 pts.
All Answer Wiki Contributors:  B00M3R   1,190 pts.
To see all answers submitted to the Answer Wiki: View Answer History.


Discuss This Question:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _


 

Hi All……………. I have written a VB script that captures all the Tab details (even the groups user belongs to , MemberOf Tab) and export it to Excel. Then, you can import it to MS Access database………….

Dim ObjWb
Dim ObjExcel
Dim MemberOf
Dim objUser, objGroup
Dim strList
Dim objmemberOf
Dim x, zz
Set objRoot = GetObject(“LDAP://RootDSE”)
strDNC = objRoot.Get(“DefaultNamingContext”)
Set objDomain = GetObject(“LDAP://” & strDNC) ‘ Bind to the top of the Domain using LDAP using ROotDSE

Call ExcelSetup(“Sheet1″) ‘ Sub to make Excel Document
x = 1
Call enummembers(objDomain)

Sub enumMembers(objDomain)
On Error Resume Next
Dim Secondary(20) ‘ Variable to store the Array of 2ndary email alias’s
For Each objMember In objDomain ‘ go through the collection

If ObjMember.Class = “user” Then ‘ if not User object, move on.
x = x +1 ‘ counter used to increment the cells in Excel

objwb.Cells(x, 1).Value = objMember.Class
‘ I set AD properties to variables so if needed you could do Null checks or add if/then’s to this code
‘ this was done so the script could be modified easier.
SamAccountName = ObjMember.samAccountName
Cn = ObjMember.CN
FirstName = objMember.GivenName
LastName = objMember.sn
initials = objMember.initials
Descrip = objMember.description
Office = objMember.physicalDeliveryOfficeName
Telephone = objMember.telephonenumber
EmailAddr = objMember.mail
WebPage = objMember.wwwHomePage
Addr1 = objMember.streetAddress
City = objMember.l
State = objMember.st
ZipCode = objMember.postalCode
Title = ObjMember.Title
Department = objMember.Department
Company = objMember.Company
Manager = ObjMember.Manager
Profile = objMember.profilePath
LoginScript = objMember.scriptpath
HomeDirectory = ObjMember.HomeDirectory
HomeDrive = ObjMember.homeDrive
AdsPath = Objmember.Adspath
LastLogin = objMember.LastLogin

objmemberof=”"
set objUser=getobject(Objmember.Adspath)
objmemberOf = objUser.GetEx(“memberOf”)

For Each objGroup in objmemberOf
strList = strList & objGroup & vbcr
Next

MemberOf = strList
strList=”"

zz = 1 ‘ Counter for array of 2ndary email addresses
For each email in ObjMember.proxyAddresses
If Left (email,5) = “SMTP:” Then
Primary = Mid (email,6) ‘ if SMTP is all caps, then it’s the Primary
ElseIf Left (email,5) = “smtp:” Then
Secondary(zz) = Mid (email,6) ‘ load the list of 2ndary SMTP emails into Array.
zz = zz + 1
End If
Next
‘ Write the values to Excel, using the X counter to increment the rows.

objwb.Cells(x, 2).Value = SamAccountName
objwb.Cells(x, 3).Value = CN
objwb.Cells(x, 4).Value = FirstName
objwb.Cells(x, 5).Value = LastName
objwb.Cells(x, 6).Value = Initials
objwb.Cells(x, 7).Value = Descrip
objwb.Cells(x, 8).Value = Office
objwb.Cells(x, 9).Value = Telephone
objwb.Cells(x, 10).Value = EmailAddr
objwb.Cells(x, 11).Value = WebPage
objwb.Cells(x, 12).Value = Addr1
objwb.Cells(x, 13).Value = City
objwb.Cells(x, 14).Value = State
objwb.Cells(x, 15).Value = ZipCode
objwb.Cells(x, 16).Value = Title
objwb.Cells(x, 17).Value = Department
objwb.Cells(x, 18).Value = Company
objwb.Cells(x, 19).Value = Manager
objwb.Cells(x, 20).Value = Profile
objwb.Cells(x, 21).Value = LoginScript
objwb.Cells(x, 22).Value = HomeDirectory
objwb.Cells(x, 23).Value = HomeDrive
objwb.Cells(x, 24).Value = Adspath
objwb.Cells(x, 25).Value = LastLogin
objwb.Cells(x,26).Value = Primary
objwb.Cells(x,27).Value = MemberOf

‘ Write out the Array for the 2ndary email addresses.
For ll = 1 To 20
objwb.Cells(x,27+ll).Value = Secondary(ll)
Next
‘ Blank out Variables in case the next object doesn’t have a value for the property
SamAccountName = “-”
Cn = “-”
FirstName = “-”
LastName = “-”
initials = “-”
Descrip = “-”
Office = “-”
Telephone = “-”
EmailAddr = “-”
WebPage = “-”
Addr1 = “-”
City = “-”
State = “-”
ZipCode = “-”
Title = “-”
Department = “-”
Company = “-”
Manager = “-”
Profile = “-”
LoginScript = “-”
HomeDirectory = “-”
HomeDrive = “-”
Primary = “-”
For ll = 1 To 20
Secondary(ll) = “”
MemberOf=”"
Next

End If

‘ If the AD enumeration runs into an OU object, call the Sub again to itinerate

If objMember.Class = “organizationalUnit” or OBjMember.Class = “container” Then
enumMembers (objMember)
End If
Next
End Sub

Sub ExcelSetup(shtName) ‘ This sub creates an Excel worksheet and adds Column heads to the 1st row
Set objExcel = CreateObject(“Excel.Application”)
Set objwb = objExcel.Workbooks.Add
Set objwb = objExcel.ActiveWorkbook.Worksheets(shtName)
Objwb.Name = “Active Directory Users” ‘ name the sheet
objwb.Activate
objExcel.Visible = True
objwb.Cells(1, 2).Value = “SamAccountName”
objwb.Cells(1, 3).Value = “CN”
objwb.Cells(1, 4).Value = “FirstName”
objwb.Cells(1, 5).Value = “LastName”
objwb.Cells(1, 6).Value = “Initials”
objwb.Cells(1, 7).Value = “Descrip”
objwb.Cells(1, 8).Value = “Office”
objwb.Cells(1, 9).Value = “Telephone”
objwb.Cells(1, 10).Value = “Email”
objwb.Cells(1, 11).Value = “WebPage”
objwb.Cells(1, 12).Value = “Addr1″
objwb.Cells(1, 13).Value = “City”
objwb.Cells(1, 14).Value = “State”
objwb.Cells(1, 15).Value = “ZipCode”
objwb.Cells(1, 16).Value = “Title”
objwb.Cells(1, 17).Value = “Department”
objwb.Cells(1, 18).Value = “Company”
objwb.Cells(1, 19).Value = “Manager”
objwb.Cells(1, 20).Value = “Profile”
objwb.Cells(1, 21).Value = “LoginScript”
objwb.Cells(1, 22).Value = “HomeDirectory”
objwb.Cells(1, 23).Value = “HomeDrive”
objwb.Cells(1, 24).Value = “Adspath”
objwb.Cells(1, 25).Value = “LastLogin”
objwb.Cells(1, 26).Value = “Primary SMTP”
objwb.Cells(1, 27).Value = “MemberOf”
End Sub
MsgBox “Done” ‘ show that script is complete

__________________________________________________

Try it.. I can modify it as per needs. Like I am now writting not to include disabled users in this sheet. If you have different needs.. let me also know

Manish

 10 pts.