2

我想使用 VBScript 或 WSH 脚本查询 AD 服务器以获取某些字段

这些字段

  • DN
  • 用户身份
  • 邮件
  • 公司
  • 显示名称

并将字段导出/输出到文本文件。

我怎样才能做到这一点?

我来自 linux 背景,需要这个,因为运行脚本的计算机正在运行 windows

使用Linux,

`ldapsearch -x -h hostserver -b "cn=contacts,dc=support,dc=com" CN="name"`
4

3 回答 3

4

通常的方法是使用 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")
...
于 2013-05-20T12:13:52.850 回答
1
attr = "distinguishedName,userid,mail,company,displayName"

userid 不是 AD 的一部分,它是 sAMAccountName

Set cmd.CommandText = base & ";" & filter & ";" & attr & ";" & scope

cmd.CommandText 不是对象,它只是: cmd.CommandText = base & ";" & 筛选 & ”;” &属性&“;” & 范围

于 2016-01-04T09:06:41.497 回答
0

您需要使用 DirectoryServices命名空间。这将使您能够访问 AD 和查询它所需的 AP。 Directory Searcher对象可用于查询 AD 并返回SerchResult 集合。然后,您可以将其中的值作为字符串读取,轻松写入文本文件。希望这有帮助!

于 2013-05-20T10:19:36.873 回答