Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

AD Gruppe auslesen

Empfohlene Antworten

Veröffentlicht

Hallo,

ich versuche gerade ein kleines Tool zu schreiben wo ich die Gruppen einer AD auslesen kann.

Kann mir einer Helfen wie ich eine Gruppe aus einer AD auslesen kann.

Ein kleiner Gruß

Stefan Heinz

Hier sind so ziemlich alle Methoden die ich jemals benutzt habe.

#region LDAP Methoden

string ExistsInLdap(string userName)

{

DirectoryEntry searchRoot = new DirectoryEntry("LDAP://DEINE DOMAIN", "dein ADMINUSER", "pw des ADMINUSERS");

DirectorySearcher search = new DirectorySearcher(searchRoot);

search.Filter = String.Format("(SAMAccountName={0})", userName);

search.PropertiesToLoad.Add("cn");

search.PropertiesToLoad.Add("samaccountname");

search.PropertiesToLoad.Add("givenname");

search.PropertiesToLoad.Add("sn");

SearchResult result = search.FindOne();

string samaccountname = (string)result.Properties["samaccountname"][0]; //Kuerzel

string givenname = (string)result.Properties["givenname"][0]; //Vorname

string surname = (string)result.Properties["sn"][0]; //Nachname

string cn = (string)result.Properties["cn"][0]; //Vor und Nachname

if (result == null)

{

return String.Empty;

}

else

{

return samaccountname;

}

}

ArrayList GetUserGroups(string userName)

{

DirectoryEntry searchRoot = new DirectoryEntry("LDAP://DEINE DOMAIN", "dein ADMINUSER", "pw des ADMINUSERS");

DirectorySearcher search = new DirectorySearcher(searchRoot);

search.Filter = String.Format("(samaccountname={0})", userName);

search.PropertiesToLoad.Add("memberOf");

string groupsList = "";

ArrayList groupList = new ArrayList();

string strtest = "";

SearchResult result = search.FindOne();

if (result != null)

{

int groupCount = result.Properties["memberOf"].Count;

for(int counter = 0; counter < groupCount; counter++)

{

groupsList = (string)result.Properties["memberOf"][counter];

int indexChar = groupsList.IndexOf(",");

string subString = groupsList.Substring(0,indexChar);

int indexChar2 = groupsList.IndexOf("=");

groupList.Add(subString.Substring(indexChar2+1,(subString.Length)-(indexChar2+1)));

}

}

return groupList;

}

ArrayList GetAllADDomainUsers(string domain)

{

ArrayList allUsers = new ArrayList();

DirectoryEntry searchRoot = new DirectoryEntry(domain,"dein ADMINUSER","pw des ADMINUSERS");

DirectorySearcher search = new DirectorySearcher(searchRoot);

search.Filter = "(&(objectClass=user)(objectCategory=person))";

search.PropertiesToLoad.Add("samaccountname");

SearchResult result;

SearchResultCollection resultCol = search.FindAll();

if (resultCol != null)

{

for(int counter=0; counter < resultCol.Count; counter++)

{

result = resultCol[counter];

if (result.Properties.Contains("samaccountname"))

{

allUsers.Add((String)result.Properties["samaccountname"][0]);

}

}

}

return allUsers;

}

ArrayList GetAllGroups()

{

ArrayList allGroups = new ArrayList();

DirectoryEntry searchRoot = new DirectoryEntry("LDAP://DEINE DOMAIN", "dein ADMINUSER", "pw des ADMINUSERS");

DirectorySearcher search = new DirectorySearcher(searchRoot);

search.Filter = "(&(objectClass=group)(objectCategory=group))";

search.PropertiesToLoad.Add("samaccountname");

SearchResult result;

SearchResultCollection resultCol = search.FindAll();

if (resultCol != null)

{

for (int counter = 0; counter < resultCol.Count; counter++)

{

result = resultCol[counter];

if (result.Properties.Contains("samaccountname"))

{

allGroups.Add((String)result.Properties["samaccountname"][0]);

}

}

}

return allGroups;

}

ArrayList GetADGroupUsers(string groupName)

{

SearchResult result;

DirectoryEntry searchRoot = new DirectoryEntry("LDAP://DEINE DOMAIN", "dein ADMINUSER", "pw des ADMINUSERS");

DirectorySearcher search = new DirectorySearcher(searchRoot);

search.Filter = String.Format("(cn={0})", groupName);

search.PropertiesToLoad.Add("member");

search.PropertiesToLoad.Add("samaccountname");

result = search.FindOne();

string memberList = "";

ArrayList userNames = new ArrayList();

if (result != null)

{

for (int counter = 0; counter <

result.Properties["member"].Count; counter++)

{

memberList = (string)result.Properties["member"][counter];

int indexChar = memberList.IndexOf(",");

string subString = memberList.Substring(0, indexChar);

int indexChar2 = memberList.IndexOf("=");

userNames.Add(subString.Substring(indexChar2 + 1, (subString.Length) - (indexChar2 + 1)));

}

}

return userNames;

}

#endregion

Hallo yhsif,

danke für die schnelle Hilfe.

Habe es an mein Programm angepasst.

Danke

Gruß

Stefan Heinz

  • 8 Monate später...

Hallo,

ich habe eine Funktion implementiert (wie hier die Funktion GetADGroupUsers(string groupName)), die die Benutzer einer Gruppe ausliest.

Mein Problem ist, dass ich den accountnamen jedes Users der Gruppe brauche, mit der Funktion jedoch der komplette Name ausgelesen wird.

kann mir da jmnd helfen?

Hier meine Funktionen zum Auslesen von Gruppen eines Users und die, die die User einer Gruppe auslesen soll.


Public Function GruppenEinesBenutzer(ByVal benutzer_id As String) As Collections.Generic.List(Of String)


        Dim searcher As DirectorySearcher = Nothing

        Dim colEntry As New Collections.Generic.List(Of String)


        searcher = New DirectorySearcher(New DirectoryEntry("LDAP://xxx.com"))

        searcher.Filter = String.Concat("(&(objectClass=User) (sAMAccountName=", benutzer_id, "))")

        searcher.PropertiesToLoad.Add("MemberOf")

        Dim result As SearchResult = searcher.FindOne

        Try

            For i As Integer = 0 To result.Properties("MemberOf").Count - 1

                Dim sProp As String = result.Properties("MemberOf")(i)

                colEntry.Add(sProp.Substring(3, sProp.IndexOf(",") - 3))

            Next

        Catch ex As Exception

        End Try

        GruppenEinesBenutzer = colEntry


    End Function

    Public Function UserInGruppe(ByVal grpname As String) As Collections.Generic.List(Of String)

        UserInGruppe = New Collections.Generic.List(Of String)

        Dim searcher As DirectorySearcher = Nothing

        Dim colEntry As New Collections.Generic.List(Of String)


        searcher = New DirectorySearcher(New DirectoryEntry("LDAP://xxx.com"))

        searcher.Filter = String.Concat("(&(objectClass=group)(|(cn=" & grpname & ")(dn=" & grpname & ")))")

        searcher.PropertiesToLoad.Add("memberof")


        Dim result As SearchResult = searcher.FindOne

        For Each tmp As String In result.GetDirectoryEntry().Properties("member").Value

            UserInGruppe.Add(tmp)

        Next

    End Function

Vielen Dank im Voraus

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.