Thursday, February 5, 2009

Script to query LDSI

I worked hard (hardly worked) to get his requirement done.. ...though to share the code ,might be useful ...hmm..

'On Error Resume Next
Dim fso
Const ForReading = 1, ForWriting = 2 , forAppend = 8

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("Members.txt", forAppend, True)

' Determine DNS domain name.
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")

' Use ADO to search Active Directory.
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" objCommand.ActiveConnection = objConnection

strBase = "<LDAP://" & strDNSDomain >"

' Filter on all user objects. strFilter = "(&(objectCategory=person)(objectClass=user))"
' Specify attribute values to retrieve.

strAttributes = "cn,distinguishedName,sAMAccountName,description,homeDirectory, mailnickName,mail,EmployeeNumber"

strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree" objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 100
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute

Do Until objRecordSet.EOF
strFullName = objRecordSet.Fields("cn")
strDN = objRecordSet.Fields("distinguishedName")
strNTName = objRecordSet.Fields("sAMAccountName")
strAlias = objRecordSet.Fields("mailnickName")
strmail = objRecordSet.Fields("mail")
strId= objRecordSet.Fields("EmployeeNumber")
strHomeDir = objRecordSet.Fields("homeDirectory")


If IsNull(strHomeDir) Then
strHomeDir = "None"
Else
strHomeDir = strHomeDir
End If

f.writeline strFullName & vbtab & strDN & vbtab & strNTName & vbtab & strHomeDir & vbtab & strAlias & vbtab & strmail & vbtab & strID
objRecordSet.MoveNext

Loop

MsgBox "Done"


Work is donee :0)


1 comment: