Zum Inhalt springen

AD Gruppe auslesen


BikerHeinze

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...