查询Active目录以获取部门名称的字符串列表的最简单方法是什么。示例:“财务”,“营销”,“IT”等。 我的案例是一个拥有超过3000个用户的企业的活动目录。
答案 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
将为您提供所有用户的部门属性的排序列表。