在c#中获取Active Directory组的用户名

时间:2016-03-31 05:18:54

标签: c# active-directory

我需要获取特定Active Directory组的用户详细信息。我正在使用此代码:

var result = grpResponse.Entries[0];

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

          var query = "(&(objectClass=user)(" + filter + "))"; // Here I need username to use like cn=username

          var userRequest = new SearchRequest(distinguishedName, query,
                                    SearchScope.Subtree);

在过滤器中,我得到类似

的内容
CN=Name,OU=something,DC=example

如何单独使用此cn值,即用户名?

2 个答案:

答案 0 :(得分:1)

如果您使用的是.NET 3.5及更高版本,则应查看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 the group's members
       foreach (Principal p in group.GetMembers())
       {
           Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName);

           // do whatever else you need to do to those members
       }
    }
}

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

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

答案 1 :(得分:0)

以下就是我所需要的。

你使用的OuString可能有多个部分 - OU和amp; DC

bstring OUString = "OU=Groups,OU=Accounts,DC=nw,DC=nos,DC=ourcompanyName,DC=com" ;

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, null, OUString))