我想查询AD服务器,以获得使用VBScript或WSH脚本的特定字段
这些领域
并将字段导出/输出到文本文件。
我怎样才能做到这一点?
我来自linux背景,需要这个,因为将运行脚本的计算机正在运行windows。
使用linux,
`ldapsearch -x -h hostserver -b "cn=contacts,dc=support,dc=com" CN="name"`发布于 2013-05-20 12:13:52
通常的方法是使用ADO和LDAP查询检索有关AD对象的信息:
Set rootDSE = GetObject("LDAP://RootDSE")
base = "<LDAP://" & rootDSE.Get("defaultNamingContext") & ">"
filter = "(&(objectClass=user)(objectCategory=Person))"
attr = "distinguishedName,userid,mail,company,displayName"
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 & ";" & filter & ";" & attr & ";" & scope
Set rs = cmd.Execute
Do Until rs.EOF
'do stuff with rs.Fields(fieldname).Value
rs.MoveNext
Loop
rs.Close
conn.Close如您所见,涉及大量样板代码,因此我编写了这个类 (ADQuery)以简化处理。自述文件包含一些示例。
如果您已经知道对象的可分辨名称,也可以直接检索它,如下所示:
dn = "CN=Joe User,OU=Users,DC=example,DC=com"
Set user = GetObject("LDAP://" & dn)
WScript.Echo user.Get("displayName")
WScript.Echo user.Get("mail")
...发布于 2016-01-04 09:06:41
attr = "distinguishedName,userid,mail,company,displayName"用户AD不是AD的一部分,它是sAMAccountName
Set cmd.CommandText = base & ";" & filter & ";" & attr & ";" & scopecmd.CommandText不是一个对象,它只是: cmd.CommandText = base &“;& filter & it;”;& attr &it;;
发布于 2013-05-20 10:19:36
您需要使用DirectoryServices 命名空间。这将允许您访问AD和所需的AP来查询它。目录搜索器对象可用于查询AD,并返回一个SerchResult收集。然后,您可以将其中的值读取为字符串,可以轻松地写入文本文件。希望这能帮上忙!
https://stackoverflow.com/questions/16646902
复制相似问题