2016-06-03 3 views
1

Comment puis-je prendre un principal et voir si c'est un groupe? ou qu'il a des membres?AccountManagement est Principal GroupPrincipal?

using(var ctx = new PrincipalContext(ContextType.Domain, "some.domain.com", "DC=some,DC=domain,DC=com")) 
{ 
    var group = GroupPrincipal.FindByIdentity(ctx, IdentityType.DistinguishedName, "some long distinguishedname"); 
    if(group != null) 
    { 
     var subgroups = group.GetMembers().Where(m => m.[IS A GROUP]) 
     foreach (var principal in group.GetMembers()) 
     { 
      Console.WriteLine(principal.DistinguishedName); 
     } 
    } 

} 
+0

pensent i trouvé la réponse: http://stackoverflow.com/questions/6354807/how-to-know-if-directoryentry-is-a-user-or-a-group –

Répondre

2

Vous pouvez « convertir » le Principal en utilisant le mot-clé as - si cela fonctionne, si cet objet est vraiment un GroupPrincipal, vous obtenez une valeur valide, sinon null:

var group = GroupPrincipal.FindByIdentity(ctx, 
              IdentityType.DistinguishedName, 
              "some long dn") as GroupPrincipal; 
                  ****************** 

if (group != null) 
{ 
    // now you *know* that it *IS* in fact a "GroupPrincipal" 
    ..... 
}