如何使用C#识别组成员是否是Active Directory中的用户或组

时间:2016-04-01 05:11:34

标签: c# active-directory ldap

var result = grpResponse.Entries[0];

if (result.Attributes["member"] != null)
{
   for (var i = 0; i < result.Attributes["member"][i].ToString()
}

上面的代码将获得一个组的所有成员。即,组可能包含组和用户。

如何只获得用户?

2 个答案:

答案 0 :(得分:0)

您应该查看System.DirectoryServices.AccountManagement(S.DS.AM)命名空间。

基本上,您可以定义域上下文并轻松在AD中查找用户和/或组:

// set up domain context - limit to the OU you're interested in
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, null, "OU=YourOU,DC=YourCompany,DC=Com"))
{
    // find the group in question
    GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");

    // if found....
    if (group != null)
    {
       // iterate over members
       foreach (Principal p in group.GetMembers())
       {
           UserPrincipal up = p as UserPrincipal;

           if (up != null) 
           {
               Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName);
               // do whatever you need to do with that user principal
           }
       }
    }
}

您无法从群组成员中 用户 - 您需要在获得结果后进行过滤。

新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!

在这里阅读更多相关信息:

答案 1 :(得分:-1)

你应该有一个给你的类型

#microsoft.graph.user

对于用户。所以,如果您使用的是办公室图表。可能有不同的方法,但这至少是其中之一。