我有一个代码可以从 AD 检索用户的详细信息,例如电子邮件地址、电话号码等。我当前使用的代码是:
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
msgbox(strUser)
Set objUser = GetObject("LDAP://" & strUser)
它获取当前登录用户的详细信息。但我现在需要做的是解析用户的用户名并根据该用户名检索详细信息。
我尝试将 objSysinfo.UserName 更改为用户名,但它返回空白。
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = "SomeUserName"
msgbox(strUser)
Set objUser = GetObject("LDAP://" & strUser)
我应该如何根据提供的用户名从 AD 中检索详细信息?
LDAP URI 需要一个专有名称。帐户名不起作用。如果您想根据帐户名获取用户对象,则需要“常规”LDAP 查询:
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
由于我对一遍又一遍地编写所有样板代码感到恼火,因此我将其包装在一个类中(ADQuery https://github.com/ansgarwiechers/adquery) 前一段时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)