列出active directory域AND子域中的用户

本文关键字:用户 AND active directory 列出 | 更新日期: 2023-09-27 18:28:27

我们有一个AD,其中用户在"mydomain.com"中,用户在"child.mydomain.com"中。当我们试图列出他们时,我们只能找到"mydomain.com"的用户和组,但我们也需要来自子域的用户和群。如何使用C#实现这一点?请看一下我的样本代码:

context = new PrincipalContext(ContextType.Domain);
//...
var filter = new GroupPrincipal(context);
filter.IsSecurityGroup = true;
using(var searcher = new PrincipalSearcher(filter)
using(var results = searcher.FindAll())
{
    foreach(GroupPrincipal group in results)
    {
        string path = "LDAP://rootDSE";
        DirectoryEntry searchRoot = new DirectoryEntry(path);
        string configNC = searchRoot.Properties["configurationNamingContext"].Value.ToString();
        DirectoryEntry configSearchRoot = new DirectoryEntry("LDAP://" + configNC);
        DirectorySearcher configSearch = new DirectorySearcher(configSearchRoot);
        configSearch.Filter("(NETBIOSName=*)");
        configSearch.PropertiesToLoad.Add("dnsroot");
        configSearch.PropertiesToLoad.Add("ncname");
        configSearch.PropertiesToLoad.Add("NETBIOSName");
        SearchResultCollection forestPartitionList = configSearch.FindAll();
        List<Tuple<string,string>> netbiosNameList = new List<Tuple<string,string>>(forestPartitionList.Count);
        foreach(SearchResult domainPartition in forestPartitionList)
        {
            string ncname = domainPartition.Properties["ncname"][0].ToString();
            string netBIOSName = domainPartition.Properties["NETBIOSName"][0].ToString();
            netbiosNameList.Add(Tuple.Create(ncname, netBIOSName));
        }
        //...
        //Find group members
        using (var principal = GroupPrincipal.FindByIdentity(context, IdentityType.DistinguishedName, group.DistinguishedName))
        using (var members = principal.GetMembers(true))
        using (var enumerator = members.GetEnumerator())
        {
            //...
        }
    }
}

代码并不是这样写的,我只想向您展示查询AD的主要调用。我们可以列出父域组和用户,但不能列出子域组和用户。如果我更改传递子域IP和用户/密码的"上下文"变量的初始化,我可以列出其中的组和用户。但我们希望在父域中能够这样做。

我希望你能帮助我。非常感谢!

列出active directory域AND子域中的用户

您可以查询全局目录。

它包含多域Active Directory林中每个域中每个对象的只读、可搜索的部分表示。

GC在端口3268(标准ldap)和3269(SSL ldap)上运行。只需在上述两个端口中的一个端口上连接到您的任何域控制器,您的搜索就会自动定向到GC服务器。

然而,要执行任何修改,您必须向对象所属特定域的域控制器发送这样的请求。