2

特定のユーザーがメンバーになっているすべてのActiveDirectoryグループを取得したいと思います。

ユーザーのすべての直接ADグループを取得するスクリプトがあります(以下のコードを参照)。

ただし、ユーザーが属する直接のADグループごとにすべての親グループを取得するにはどうすればよいですか。

たとえば、私は直接ADグループの一部ですIT Team Managers。このグループは、etcという親グループのメンバーIT Team Nationalです。コードからこの親グループを取得するにはどうすればよいですか?

よろしくお願いします!

DirectorySearcher ouSearch = new DirectorySearcher(entry);
ouSearch.Filter = "(&(objectClass=User)(sAMAccountName=" + username + "))";

//ouSearch.PropertiesToLoad.Add("samAccountName");
ouSearch.PropertiesToLoad.Add("memberOf");
ouSearch.SearchScope = SearchScope.Subtree;

SearchResult allOUS = ouSearch.FindOne();

//foreach (string g in allOUS.Properties["memberOf"])
{
    equalsIndex = g.IndexOf("=", 1);
    commaIndex = g.IndexOf(",", 1);

    if (equalsIndex == -1)
    {
       return null;
    }

    groupNames.Append(g.Substring((equalsIndex + 1), (commaIndex - equalsIndex) - 1));
    groupNames.Append(",");
}
4

1 に答える 1

2

.NET 3.5以降を使用している場合は、System.DirectoryServices.AccountManagement(S.DS.AM)名前空間を確認する必要があります。ここでそれについてすべて読んでください:

基本的に、ドメインコンテキストを定義して、AD内のユーザーやグループを簡単に見つけることができます。

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
   // get the "authorization groups" the user is a member of - recursively
   var authGroups = user.GetAuthorizationGroups();

   // iterate over groups
   foreach(Principal p in authGroups)
   {
      // do something with groups ....       
   }
}

新しいS.DS.AMを使用すると、ADのユーザーやグループを簡単に操作できます。

于 2012-10-23T06:57:35.947 に答える