使用VBScript/WSH查询Active Directory并导出

使用VBScript/WSH查询Active Directory并导出,vbscript,active-directory,ldap,wsh,Vbscript,Active Directory,Ldap,Wsh,我想使用VBScript或WSH脚本查询AD服务器以获取某些字段 这些领域 DN 用户ID 邮寄 公司 显示名 并将字段导出/输出到文本文件 我怎样才能做到这一点 我来自linux背景,需要这个,因为运行脚本的计算机正在运行windows 使用linux `ldapsearch -x -h hostserver -b "cn=contacts,dc=support,dc=com" CN="name"` 您需要使用DirectoryServices。这将使您能够访问广告以及查询广告所需的AP

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

这些领域

  • DN
  • 用户ID
  • 邮寄
  • 公司
  • 显示名
并将字段导出/输出到文本文件

我怎样才能做到这一点

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

使用linux

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

您需要使用DirectoryServices。这将使您能够访问广告以及查询广告所需的AP。
对象可用于查询AD并返回一个。然后,您可以将这些值作为字符串读取,很容易写入文本文件。希望这是有帮助的

通常的方法是使用ADO和检索有关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
用户ID不是AD的一部分,它是sAMAccountName

Set cmd.CommandText = base & ";" & filter & ";" & attr & ";" & scope
cmd.CommandText不是对象,它只是:
cmd.CommandText=base&“;”&filter&“;”&attr&“;”&scope发生错误。在缓存中找不到directory属性。它已修复,但如何检查dn是否具有与某些dn具有mail类似的属性,如何检查某些dn是否具有空属性(),以检查该属性是否具有值。
attr = "distinguishedName,userid,mail,company,displayName"
Set cmd.CommandText = base & ";" & filter & ";" & attr & ";" & scope