Vbscript vbs ldap查询问题

Vbscript vbs ldap查询问题,vbscript,ldap,ldap-query,Vbscript,Ldap,Ldap Query,我目前正在尝试使用我的少量脚本知识,通过ldap搜索基于变量的用户,然后获取该用户的displayname。 到目前为止,我已经在下面了,我被卡住了 On Error Resume Next Dim objNetwork Dim userName Set objNetwork = CreateObject("WScript.Network") userName = objNetwork.UserName WScript.Echo userName Set

我目前正在尝试使用我的少量脚本知识,通过ldap搜索基于变量的用户,然后获取该用户的displayname。 到目前为止,我已经在下面了,我被卡住了

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
出错时继续下一步
暗长方体网络
暗淡用户名
设置objNetwork=CreateObject(“WScript.Network”)
userName=objNetwork.userName
Echo用户名
设置objConnection=CreateObject(“ADODB.Connection”)
设置objCommand=CreateObject(“ADODB.Command”)
objConnection.Provider=“ADsDSOObject”
objConnection.打开“Active Directory提供程序”
设置objCommand.ActiveConnection=objConnection
objCommand.Properties(“页面大小”)=1000
objCommand.CommandText=_
“;(objectCategory=User);名称;子树”
Set objRecordSet=objCommand.Execute
objRecordSet.MoveFirst
直到objRecordSet.Fields(“Name”).Value=username
objRecordSet.MoveNext
环
Wscript.Echo objRecordSet.Fields(“Name”).Value
请帮忙

我删除了上面的内容,现在正在尝试,但出现语法错误

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") 
选项显式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集

objRoot=getobject(“LDAP://RootDSE”)cmd.commandtext=“我怀疑属性名是否为name,请尝试在此行中显示name:

"<LDAP://dc=domain,dc=com>;(objectCategory=User);Name;Subtree" 
”;(objectCategory=用户);名称子树“

最终得到了这个

设置objConnection=CreateObject(“ADODB.Connection”)

Set objCommand=CreateObject(“ADODB.Command”)
objConnection.Open“Provider=ADsDSOObject;" 
objCommand.ActiveConnection=objConnection
strDomainName=“dc=domain,dc=com”
strUserCN=用户名
objCommand.CommandText=“;(&(objectCategory=person)(objectClass=user)(cn=“&strUserCN&”);显示名称;子树“
Set objRecordSet=objCommand.Execute
如果不是objRecordset.EOF,则
stray=split(objRecordSet.Fields(“displayName”),“(”)
strdat=stray(0)
用户名=修剪(标准数据)
如果结束

如何将username变量传递到ldap搜索中,然后让它回显显示名称,而不是遍历整个目录我对vbs和cmd都不熟悉以下是在cmd中对/F%a有效的('Dsquery.exe*-filter'(&(objectClass=user)(!(objectClass=computer)(sAMAccountName=adam.sallee)))“^ | Dsget user-displayname^ | Find”Adam.Sallee“)Do Set display=%a@TLDAN考虑将过滤器更改为(&(ObjutCype =用户)(SAMAcQueNe= YULL变量)),您的语言支持变量的任何格式。<代码>((ObjeCype=用户)(ObjutCype=人)…)
可能是一个更好的过滤器。请看。@AnsgarWiechers,是的,但我不想更改他的过滤器的太多内容。也许重新开始会是最好的。我想要的是将account名称作为一个变量,我可以得到它,然后用该帐户名称搜索ldap并显示displayname字段。这个答案有.vbs示例脚本doing按SAMAccountName通配符进行搜索。
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