eine Gruppe wie diese in Active Directory Gegeben:Holen Mitglieder einer Active Directory-Gruppe rekursiv, dh einschließlich der Untergruppen
MainGroup
GroupA
User1
User2
GroupB
User3
User4
Ich kann leicht feststellen, ob User3 Mitglied des Maingroup oder eine ihrer Untergruppen mit Code wie folgt ist :
using System;
using System.DirectoryServices;
static class Program {
static void Main() {
DirectoryEntry user = new DirectoryEntry("LDAP://CN=User3,DC=X,DC=y");
string filter = "(memberOf:1.2.840.113556.1.4.1941:=CN=MainGroup,DC=X,DC=y");
DirectorySearcher searcher = new DirectorySearcher(user, filter);
searcher.SearchScope = SearchScope.Subtree;
var r = searcher.FindOne();
bool isMember = (r != null);
}
}
Ich mag würde wissen, ob es eine ähnliche Art und Weise ist es, alle Benutzer zu erhalten, das Mitglied einer Gruppe oder einer ihrer Untergruppen, dh in dem Beispiel für Maingroup erhalten Benutzer1, Benutzer2, Benutzer3 und User4 .
Der offensichtliche Weg, alle Benutzer zu bekommen, besteht darin, jede Untergruppe rekursiv abzufragen, aber ich frage mich, ob es einen einfacheren Weg gibt.
Verwenden Sie den gleichen Ansatz mit dem Filter memberOf:1.2.840.113556.1.4.1941:
, aber die Verwendung der Domain root anstelle des Benutzers als Suchbasis ist nicht möglich, da die Abfrage zu lange dauert (wahrscheinlich berechnet sie alle Gruppenmitgliedschaften rekursiv für alle Benutzer in der Domäne und überprüft, ob sie Mitglied der gegebenen Gruppe sind).
Welches ist der beste Weg, um alle Mitglieder einer Gruppe einschließlich ihrer Untergruppen zu bekommen?
Dieser Beitrag wurde für eine kleine Weile hier gewesen, aber ich wollte einen Dank für die Buchung Ihre Antwort hinzuzufügen. Ich bin gerade auf das gleiche Problem gestoßen, und ich versuche es gerade auszuprobieren. – Steven
Ich weiß nicht, ob Sie das sehen werden (oder auch, wenn dies die geeignetste Art ist, eine Frage wie diese zu stellen, aber ich habe einige Probleme damit, dies zu erreichen, und ich denke, es liegt wahrscheinlich an meinem Mangel an Wenn ich den eindeutigen Namen (DN) meiner Gruppe erhalte, gibt es so etwas zurück: 'CN =, OU = , OU = Verteilerliste, OU = Exchange Services, OU = Core Directory Services, DC = , DC = com 'Aber wenn ich versuchte, dagegen zu suchen (oder das ohne das führende "CN ="), bekomme ich einen "unspezifizierten Fehler" an dem Punkt, wo Sucher durch FindAll() lief –
Steven
@Steven: Ich denke, dass der Das Beste für Sie wäre, eine neue Frage zu stellen (mit einem Link zu diesem, wenn es ein damit verbundenes Problem ist). Im Moment kann ich Ihnen nicht helfen, da ich eine Domain vermisse, an der ich testen kann, sorry :) –