【问题标题】:Active Directory query for username, first name, last name and emailActive Directory 查询用户名、名字、姓氏和电子邮件
【发布时间】:2009-12-17 22:05:52
【问题描述】:

请原谅我的无知,我对 AD 知之甚少(更不用说用 AD 查询或在谷歌上搜索了)。我想获取特定域中所有用户的列表,包括他们的名字、姓氏和电子邮件 ID。网络管理员(或我的帮助台)能够做到这一点吗?我的另一个选择:我在 Excel 工作表中有用户名,在另一个文本文件中有全名(在其他数据中 - 比如说 XXXyy,FirstName LastName - 我必须拆分,解析它以提取名称)并在另一个文件中发送电子邮件,没有其中有条不紊。也可能有一些缺失的数据:(

查询 AD 的最佳方法是什么?

编辑:也许我应该更具体。如果我看到我的网络管理员会做什么来获取这些信息,他会做什么?

【问题讨论】:

  • 请指定平台。
  • Windows Server 2003/2008

标签: active-directory


【解决方案1】:

Active Directory 通过 OLE DB 和 ADO 公开查询接口。提供者是“ADsDSOObject”,查询语法如下:

<LDAP://mydomain.com>;(objectType=user);givenname,sn

相反,URL 架构名称 LDAP 必须大写。

Excel 没有内置的 ADO 客户端,除非您使用 VBA 编写代码。

更新:为您编写了一个简单的 JavaScript 查询脚本:

var conn = new ActiveXObject("ADODB.Connection");
conn.Open("Provider=ADsDSOObject");
var rs = conn.Execute("<LDAP://your-domain.com>;(objectClass=user);sn,givenname");
var i;
if(!rs.EOF)
{
    rs.MoveFirst();
    while(!rs.EOF)
    {

        WScript.Echo(rs.Fields.Item("givenname")+","+rs.Fields.Item("sn")+"\n");
        rs.MoveNext();
    }
}

它会查询您域中所有用户的名字和姓氏。将您的域名放在第三行。然后保存为.js文件,这样执行:

cscript adquery.js >a.txt

您最终会得到一个名为 a.txt 的文本文件,其中包含您的用户名,以逗号分隔。将其导入 Excel 之类的。

在 Excel 中,如果您愿意使用宏,可以针对执行相同查询的 ADO 编写 VBA 函数。或者使用 .NET 的 DirectorySearcher,最新版本的 Excel 允许您使用 .NET 对象。

【讨论】:

    【解决方案2】:

    如果您使用的是 .NET 平台,我建议您查看System.DirectoryServices namespace,它“提供从托管代码对 Active Directory 域服务的轻松访问”。

    MSDN 还提供了使用System.DirectoryServices 执行常见任务的代码示例,VBC# 均可用。如果您熟悉其中一种语言,那么您应该希望能够从这些示例中收集到您需要的内容(至少开始,然后也许可以在 SO 上提出其他更具体的问题)。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2021-12-06
      • 2017-10-12
      • 1970-01-01
      • 2019-05-19
      • 2017-03-05
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2016-08-22
      相关资源
      最近更新 更多