Veröffentlicht 15. Januar 200817 j 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
15. Januar 200817 j 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
17. Januar 200817 j Hallo yhsif, danke für die schnelle Hilfe. Habe es an mein Programm angepasst. Danke Gruß Stefan Heinz
19. September 200816 j 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.