我正在寻找一种简单的方法将所有活动目录用户信息导出到每个人的唯一 vcard 中。有一些信息我想从电子名片中删除,例如家庭电话和紧急联系人。我环顾了网络,并没有找到任何东西。任何帮助,将不胜感激。
2 回答
我怀疑会有一个非常简单的方法。最终,您需要
- 枚举您的所有用户(或因此的子集)
- 迭代生成的用户列表
- 将每个用户的数据导出到 VCard
对于搜索和迭代部分,您可以使用 aPrincipalSearcher
进行搜索:
// create your domain context
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
// define a "query-by-example" principal - here, we search for a UserPrincipal
// this "QBE" user would give you the ability to further limit what you get back
// as results from the searcher
UserPrincipal qbeUser = new UserPrincipal(ctx);
// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);
// find all matches
foreach(var found in srch.FindAll())
{
UserPrincipal foundUser = found as UserPrincipal;
if(foundUser != null)
{
ExportToVCard(foundUser);
}
}
}
现在剩下要做的就是创建ExportToVCard
函数 :-) 请参阅此博客文章,其中包含代码示例和更多链接以获取帮助。
如果您还没有 - 绝对阅读 MSDN 文章Managing Directory Security Principals in the .NET Framework 3.5,它很好地展示了如何充分利用 .NET Framework 中的新功能System.DirectoryServices.AccountManagement
。或查看System.DirectoryServices.AccountManagement命名空间上的 MSDN 文档。
如果您只想要数据本身,我会看看 Softerra 的免费 LDAP 浏览器,在此处找到。
为您的目录服务器设置配置文件 - 一旦它在浏览器中连接,您将看到在初始设置期间提供的 BaseDN 的默认架构。在服务器图标上,右键单击,然后单击“导出数据”。
导出向导将引导您完成大部分过程,但重要的部分是第 3 步。如果您想查找所有用户,只需将您的搜索过滤器设置为(objectClass=user)
,确保您的搜索范围是子树,然后编辑您需要的属性想回来。
您必须将结果处理到 VCards 中,但这是获取您想要的所有用户和属性的最简单/最快的方法。