如何使用C#获取Active Directory中的Departments列表

时间:2009-06-28 23:30:23

标签: c# ldap

查询Active目录以获取部门名称的字符串列表的最简单方法是什么。示例:“财务”,“营销”,“IT”等。 我的案例是一个拥有超过3000个用户的企业的活动目录。

1 个答案:

答案 0 :(得分:6)

假设您只想获取返回Department属性的对象列表,可以使用System.DirectoryServices命名空间中的DirectorySearcher。

然后你的过滤器会是这样的:

ds.Filter = "(objectClass=user)";

然后你可以告诉搜索者只加载部门属性:

ds.PropertiesToLoad.Add("department");

然后枚举结果集:

SearchResultCollection results = ds.FindAll();

然后将每个department属性添加到Dictionary以获取所有唯一值

 foreach (SearchResult result in results)
 {
   string dept = String.Empty;
   DirectoryEntry de = result.GetDirectoryEntry();
   if (de.Properties.Contains("department"))
   {
     dept = de.Properties["department"][0].ToString();
     if (!dict.ContainsKey(dept))
     {
       dict.Add(result.Properties["department"][0].ToString();
     }
  }
}


或者,有一些命令行工具可以为您提供dsquery或adfind等信息。

adfind -default -f "(objectclass=user)" department -list | sort

将为您提供所有用户的部门属性的排序列表。