While adding a new user to a SharePoint group, you can enter Active Directory group name, so that all the users inside the AD group can access the SharePoint site, which is completely a out-of-box functionality in SharePoint. But there might be requirement where we need to access users of a specific AD group independently to perform some action against each of them.
Below is the code snippet in c# to acces each users details of a specific Active Directory group.
NameSpace: using Microsoft.SharePoint.Utilities;
bool reachMaxCount;
// objSPWeb is the SPWeb object
SPPrincipalInfo[] adGroupUsers = SPUtility.GetPrincipalsInGroup(objSPWeb, "DomainName\\GroupName", 100, out reachMaxCount);
foreach (SPPrincipalInfo objAdUserInfo in adGroupUsers)
{
string loginName = objAdUserInfo.LoginName;
string displayName = objAdUserInfo.DisplayName;
string emailId = objAdUserInfo.Email;
}
**************Fetch the AD users using LDAP**************
public void GetADUsersInADGroup(string domainName,string groupName)
{
string userNames = "Users : " + Environment.NewLine;
string anyADUserID = "samarendra";
string anyADUserPassword = "password";
DirectoryEntry entry = new DirectoryEntry("LDAP://" + domainName, anyADUserID, anyADUserPassword);
DirectorySearcher dSearch = new DirectorySearcher(entry);
dSearch.Filter = "(&(objectClass=group)(cn=" + groupName + "))";
SearchResult results = dSearch.FindOne();
if (results != null)
{
DirectoryEntry objGroup = new DirectoryEntry(results.Path, anyADUserID, anyADUserPassword, AuthenticationTypes.Secure);
System.DirectoryServices.PropertyCollection pcoll = objGroup.Properties;
for (int count = 0; count < pcoll["member"].Count; count++)
{
DirectoryEntry deUser = new DirectoryEntry("LDAP://" + domainName + "/" + pcoll["member"][count].ToString(), anyADUserID, anyADUserPassword, AuthenticationTypes.Secure);
userNames += deUser.Properties["cn"].Value + Environment.NewLine; // cn is for login Name
}
objGroup.Close();
}
}
Samarendra Swain
No comments:
Post a Comment