Getting AD Details based on username

Just an extra comment to Ansgar the RootDSE is great if you only have one domain. You can modify his code to point else where:

    base  = "<LDAP://" & rootDSE.Get("defaultNamingContext") & ">"

to something like:

    base  = "<LDAP://" & "DC=corp,DC=foo,DC=com" & ">"

if your domain AD domain is corp.foo.com


LDAP URIs require a distinguished name. Account names won't work. If you want to get user objects based on the account name you need a "regular" LDAP query:

username = "SomeUserName"

Set rootDSE = GetObject("LDAP://RootDSE")
base  = "<LDAP://" & rootDSE.Get("defaultNamingContext") & ">"
'filter on user objects with the given account name
fltr  = "(&(objectClass=user)(objectCategory=Person)" & _
        "(sAMAccountName=" & username & "))"
'add other attributes according to your requirements
attr  = "distinguishedName,sAMAccountName"
scope = "subtree"

Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADsDSOObject"
conn.Open "Active Directory Provider"

Set cmd = CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = base & ";" & fltr & ";" & attr & ";" & scope

Set rs = cmd.Execute
Do Until rs.EOF
  WScript.Echo rs.Fields("distinguishedName").Value
  rs.MoveNext
Loop
rs.Close

conn.Close

Since I got annoyed from having to write all that boilerplate code over and over again, I wrapped it in a class (ADQuery) some time ago.