Mit diesem Snippet können alle Benutzer ausgelesen werden, welche zu einer bestimmten Gruppe gehören. Jedoch bezieht sich diese "AD-Anfrage" nur auf die Domäne in der man selbst befindet.
Des weiteren sind noch folgende usings einzubinden:
using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;
/// <summary>
/// Ermittelt alle Benutzer die einer Gruppe angehören.
/// </summary>
/// <param name="group">
/// Name der Gruppe für welche alle zugehörigen Mitglieder ermittelt werden sollen.
/// </param>
/// <returns>
/// eine Liste mit den Mitgliedernamen
/// </returns>
private List<string> GetMemberOfGroup(string group)
{
List<string> members = new List<string>();
// Objekt für AD-Abfrage erzeugen
using (DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry(string.Empty)))
{
// nach Kriterium filtern - hier nach Gruppe mit einem best. Namen (Inhalt von 'group')
searcher.Filter = string.Format(@"(&(objectClass=group)(cn={0}))", group);
// Anfrage mit gesetzteen Filter ausführen und Ergebnisse durch iterieren
foreach (SearchResult result in searcher.FindAll())
{
// Eigenschaft 'member' des AD-Knotenpunktes 'result' durch iterieren
foreach (var member in result.Properties["member"])
{
// AD-Eintrag für Suchergebnis abrufen
using (DirectoryEntry memberResult = new DirectoryEntry(string.Format("LDAP://{0}", member)))
{
string username = null;
// wenn Fehler beim abrufen...
try
{
username = memberResult.Properties["sAMAccountName"].Value as string;
}
catch (Exception) //...dann von der Eigenschaft 'Path' die Erste CN nehmen
{
username = memberResult.Path.Substring(0, memberResult.Path.IndexOf(','))
.Replace("LDAP://CN=", string.Empty);
}
// wenn 'username' nicht 'null' dann zur Liste hinzufügen
if (username != null)
members.Add(username);
}
}
}
}
// sollte nichts ermittelt worden sein, "- kein Eintrag gefunden -" in Liste einfügen
if (members.Count < 1)
members.Add("- kein Eintrag gefunden -");
return members;
}
1 Kommentare zum Snippet