为什么会
GroupPrincipal group = GroupPrincipal.FindByIdentity(getPrincipalContext(),
"TEST_DESTINATION_GRP");
返回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;
}
上述代码的输出是:
Domain Users GRP_ADMIN_SERVER GRP_PROG_III CTXXA-FlexUser CTXXA-Users Wtf Abanico, Elnora@MSH empty why!!!!
有什么想法吗?
答案 0 :(得分:6)
sDomain
方法中sDefaultOU
和getPrincipalContext
的值是多少?
我会尝试以下步骤:
构建没有任何域名或OU名称的PrincipalContext
- 在这种情况下,将使用您的默认域及其顶级节点:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
立即搜索 - 它是否找到了您正在寻找的群组?
检查以确保域和sDefaultOU
值是正确的 - 如果将主要上下文连接到一个OU,则无法在另一个OU中进行搜索(除非那是OU的子OU)你正在连接)。