To get started, it is easier if you installed the Webpart templates for VS.NET
Created a solution using webpart template and you are ready to go.
Call this function to pass in the name of the ADgroup and it will return a list of users name.
//Query Active Directory to get users from Active Directory Groups public StringCollection GetGroupMembers(stringstrGroup) {StringCollection groupMemebers = new StringCollection(); try {DirectoryEntry ent = new DirectoryEntry(LDAP://OU=youOU,DC=yourDC); DirectorySearcher srch = new DirectorySearcher("(CN=" + strGroup + ")"); SearchResultCollection coll = srch.FindAll(); foreach (SearchResult rs in coll) {ResultPropertyCollection resultPropColl = rs.Properties; foreach (Object memberColl in resultPropColl["member"]) {DirectoryEntry gpMemberEntry = new DirectoryEntry("LDAP://"+ memberColl); System.DirectoryServices.PropertyCollection userProps = gpMemberEntry.Properties; //getting user properties from AD object obVal = userProps["displayName"].Value; object obAcc = userProps["sAMAccountName"].Value; if (null != obVal) { groupMemebers.Add( "User Name:" +obAcc.ToString() + ", User login name:" + obVal.ToString() + " ");}}}} catch (Exception ex) {//writer.Write(ex.Message);} Return groupMemebers; |
To get the names of the current site users from Sharepoint Security Groups:
ArrayList belongToDomain = new ArrayList(); ArrayList names = new ArrayList(); using(SPSite collSite = new SPSite(SPContext.Current.Site.ID)) {using (SPWeb elevatedWeb = collSite.OpenWeb(SPContext.Current.Web.ID)) {//All users in the site SPUserCollection collUser = SPContext.Current.Web.AllUsers; SPGroupCollection collgroup = SPContext.Current.Web.Groups; //for each item in the collection of groups foreach (object group in collgroup){ //display all users other then the visitors if (group.ToString() != "Visitors"){ //check that the users in the whole site collection belongs to current site group foreach (SPUser singleuser in collUser) {//get the list of groups that the user belongs to foreach (SPGroup userGroup in singleuser.Groups) {//check if it matches any of the current site groups if (group.ToString() == userGroup.ToString()) {//check if the user from the sharepoint group is a AD group if (singleuser.IsDomainGroup) {//pass the name into Array that query the AD belongToDomain.Add(singleuser.ToString());} else{ //otherwise add into the Array that stores list of names, in case the user name is not from an AD group. names.Add(singleuser.LoginName); );}} }}}}}} |
Now that we have the names of the AD groups from the share point security groups and query the AD for a list of user name. It is now in the names array, we need to make sure that there are no duplicate names. So call the function below and pass in the names array.
//remove duplicate users name Function public ArrayList RemoveDups(ArrayList items) { ArrayList noDups = new ArrayList(); foreach (string strItem in items) { if (!noDups.Contains(strItem.Trim())) { noDups.Add(strItem.Trim()); } } noDups.Sort(); return noDups;} |