Feedback

C# - ActiveDirectory - Benutzer einer Gruppe ermitteln

Veröffentlicht von am 08.12.2009
(3 Bewertungen)
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;
GFU-Schulungen  [Anzeige]

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

/// <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

Keks1911 schrieb am 23.07.2010:
Die Exception sollte wohl "NotSupportedException" sein.
 

Logge dich ein, um hier zu kommentieren!