使用 DirectoryServices.AccountManagement 从 OU 获取组

时间:2022-11-26
本文介绍了使用 DirectoryServices.AccountManagement 从 OU 获取组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我想使用 AccountManagement 列出组织单位中的所有组.

I'd like to use AccountManagement to list all the groups in an Organizational Unit.

以下代码段适用于 DirectoryServices,但我必须在结果中使用 DirectoryEntry 路径实例化 GroupPrincipal(这感觉像是一个肮脏的修复).

The following snippet works with DirectoryServices but I would have to instanciate GroupPrincipal with the DirectoryEntry path in the result (which feels like a dirty fix).

DirectoryEntry root = new DirectoryEntry("LDAP://OU=Marketing,OU=Operations,OU=Applications,DC=mycompany,DC=local")
        DirectorySearcher ds = new DirectorySearcher(root);
        ds.Filter = "(objectCategory=group)";
        SearchResultCollection results = ds.FindAll();

有人有想法吗?

谢谢!

推荐答案

您可以将 PrincipalContext 设置为要开始搜索的 OU 并使用 PrincipalSearcher-System.DirectoryService.AccountManagement 中的类来完成你需要的,像这样:

You can set the PrincipalContext to the OU where you want to start the search and use the PrincipalSearcher-class in System.DirectoryService.AccountManagement to accomplish what you need, like this:

PrincipalContext yourOU = new PrincipalContext(ContextType.Domain, "mycompany.local", "OU=Marketing,OU=Operations,OU=Applications,DC=mycompany,DC=local");
GroupPrincipal findAllGroups = new GroupPrincipal(yourOU, "*");
PrincipalSearcher ps = new PrincipalSearcher(findAllGroups);
foreach(var group in ps.FindAll())
{
  Console.WriteLine(group.DistinguishedName);
}
Console.ReadLine();

这篇关于使用 DirectoryServices.AccountManagement 从 OU 获取组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

上一篇:从 Active Directory 获取所有直接报告 下一篇:如何获取来宾/管理员的本地组名称?

相关文章

最新文章