BikerHeinze Geschrieben 15. Januar 2008 Geschrieben 15. Januar 2008 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 Zitieren
yhsif Geschrieben 15. Januar 2008 Geschrieben 15. Januar 2008 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 Zitieren
BikerHeinze Geschrieben 17. Januar 2008 Autor Geschrieben 17. Januar 2008 Hallo yhsif, danke für die schnelle Hilfe. Habe es an mein Programm angepasst. Danke Gruß Stefan Heinz Zitieren
jay83com Geschrieben 19. September 2008 Geschrieben 19. September 2008 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 Zitieren
Empfohlene Beiträge
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.