Vbscript vbs ldap查询问题
我目前正在尝试使用我的少量脚本知识,通过ldap搜索基于变量的用户,然后获取该用户的displayname。 到目前为止,我已经在下面了,我被卡住了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
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