为什么GroupPrincipal.FindByIdentity返回null,即使我知道组存在

本文关键字:我知道 存在 GroupPrincipal FindByIdentity 返回 null 为什么 | 更新日期: 2023-09-27 18:04:28

为什么

GroupPrincipal group = GroupPrincipal.FindByIdentity(getPrincipalContext(), 
                                                         "TEST_DESTINATION_GRP");

return null ?我知道TEST_DESTINATION_GRP存在于集团的组织单位之下。

我代码:

private void addUserToGroup(string userName, string groupName)
{
    try
    {
        UserPrincipal user = UserPrincipal.FindByIdentity(getPrincipalContext(), IdentityType.SamAccountName, "jcolon");
        GroupPrincipal group = GroupPrincipal.FindByIdentity(getPrincipalContext(), "TEST_DESTINATION_GRP");
        //just to show that I can access AD            
        ArrayList x = getUserGroups(userName);
        foreach (var xy in x)
        {
            Console.WriteLine(xy);
        }//I can access AD FINE
        if (group == null)
        { Console.WriteLine("Wtf!"); }
        Console.WriteLine(user); 
        Console.WriteLine(group + "empty why!!!!");
    }
    catch (Exception e)
    { 
        //log e
    }
}
private PrincipalContext getPrincipalContext()
{
    PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain,sDefaultOU);          
    return oPrincipalContext;
}   
上面代码的输出是: <>之前域用户GRP_ADMIN_SERVERGRP_PROG_IIICTXXA-FlexUserCTXXA-UsersWtfAbanico, Elnora@MSH空为什么! !之前

任何想法吗?

为什么GroupPrincipal.FindByIdentity返回null,即使我知道组存在

您的getPrincipalContext方法中sDomainsDefaultOU的值是多少??

我会尝试以下步骤:

  1. 构建没有任何域或OU名称的PrincipalContext -在这种情况下,您的默认域及其顶级节点将被使用:

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
    

    现在搜索-它是否找到你正在寻找的组??

  2. 检查以确保域和sDefaultOU值是正确的-如果您将您的主体上下文连接到一个OU,显然您不能在另一个OU中搜索(除非那是您正在连接的OU的子OU)。

相关文章: