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

标签 vbscript active-directory ldap wsh

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

这些字段

  • DN
  • userid
  • mail
  • company
  • displayName

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

我怎样才能做到这一点?

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

使用Linux,

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

最佳答案

通常的方法是使用 ADO 和 LDAP query检索有关 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

正如你所看到的,涉及到很多样板代码,所以我写了 this class (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")
...

关于vbscript - 使用 VBScript/WSH 查询 Active Directory 并导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16646902/

相关文章:

wcf - 通过 VBScript 调用 WCF 服务

vbscript - 将字符串转换为整数

php - LDAP 身份验证 php 不适用于某些字符

c# - 多个客户端使用 Active Directory 进行身份验证

vba - 在 VBS/VBA 中退出 while 循环

mysql - 在 Ms. Access 中生成随机字母数字 key

active-directory - 具有 MemberOf 属性的 LDAP DirectorySearcher,用户是 ad_group1 或 ad_group2(任何组或两个组)的成员

Ruby net-ldap 添加用户

json - extJS:读取嵌套的 JSON

ldap - 使用 ApacheDS 2.0 的 Worklight LDAP 身份验证