vbs ldap query issues

2019-08-02 05:47发布

问题:

i am currently trying to use my small knowledge of scripting to search through ldap find a user based on a variable then get my the displayname for that user. so far i ahve the below and im stuck

On Error Resume Next

Dim objNetwork 
Dim userName   

  Set objNetwork = CreateObject("WScript.Network") 
  userName = objNetwork.UserName   
  WScript.Echo userName 


  Set objConnection = CreateObject("ADODB.Connection")
 Set objCommand =   CreateObject("ADODB.Command")
 objConnection.Provider = "ADsDSOObject"
 objConnection.Open "Active Directory Provider"
 Set objCommand.ActiveConnection = objConnection

     objCommand.Properties("Page Size") = 1000

        objCommand.CommandText =  _
  "<LDAP://dc=domain,dc=com>;(objectCategory=User);Name;Subtree"  
Set objRecordSet = objCommand.Execute

 objRecordSet.MoveFirst

  Do Until objRecordSet.Fields("Name").Value = username

  objRecordSet.MoveNext
  Loop

  Wscript.Echo objRecordSet.Fields("Name").Value

= PLEASE HELP!!

I scartached the above and am now trying this but get syntax errors

option explicit dim cmd, cn, rs, objRoot,
set cmd = createobject("ADODB.Command") 
    set cn = createobject("ADODB.Connection") 

set rs = createobject("ADODB.Recordset") 
cn.open "Provider=ADsDSOObject;" 

cmd.activeconnection = cn set 

objRoot = getobject("LDAP://RootDSE") cmd.commandtext = "<LDAP://dn=domain,dn=com">;(&(objectClass=user)(!(objectClass=computer)            (sAMAccountName=first.last))));name,displayname;subtree"

cmd.properties("page size")=1000 set rs = cmd.execute 

wscript.echo rs("name") 

回答1:

I doubt the attribute name is Name, and try displayName instead in this line:

"<LDAP://dc=domain,dc=com>;(objectCategory=User);Name;Subtree" 


回答2:

ended up getting with this

Set objConnection = CreateObject("ADODB.Connection")

Set objCommand = CreateObject("ADODB.Command")  

objConnection.Open "Provider=ADsDSOObject;" 
objCommand.ActiveConnection = objConnection  

strDomainName = "dc=domain,dc=com" 
strUserCN = username 
objCommand.CommandText = "<LDAP://" & strDomainName & ">;(&(objectCategory=person)     (objectClass=user)(cn=" & strUserCN & "));displayName;subtree"  

Set objRecordSet = objCommand.Execute  

If Not objRecordset.EOF Then  

strray = split(objRecordSet.Fields("displayName"),"(") 
strdat = strray(0)



username = trim(strdat)

End If