C# 如何从Active Directory获取组中每个成员的属性列表,如名字、姓氏、电子邮件
这里是方法。请看一看这里作为代码注释的部分。我向组名传递字符串[]参数,并查找这些组成员的属性C# 如何从Active Directory获取组中每个成员的属性列表,如名字、姓氏、电子邮件,c#,active-directory,C#,Active Directory,这里是方法。请看一看这里作为代码注释的部分。我向组名传递字符串[]参数,并查找这些组成员的属性 public List<Users> GetUsers(string[] groupNames) { List<Users> employees = new List<Users>(); string firstName = string.Empty; string lastName = string.
public List<Users> GetUsers(string[] groupNames)
{
List<Users> employees = new List<Users>();
string firstName = string.Empty;
string lastName = string.Empty;
string mail = string.Empty;
using (var context = new PrincipalContext(ContextType.Domain, "Name"))
{
foreach (var groupName in groupNames)
{
foreach (var userPrincipal in GroupPrincipal.FindByIdentity(context, groupName).GetMembers())
{
//code here please
employees.Add(new MPI.Domain.Entities.Users { First = firstName, Email = mail, Last = lastName });
}
}
}
return employees;
}
公共列表GetUsers(字符串[]组名)
{
列出员工=新列表();
string firstName=string.Empty;
string lastName=string.Empty;
string mail=string.Empty;
使用(var context=newprincipalcontext(ContextType.Domain,“Name”))
{
foreach(groupName中的var groupName)
{
foreach(GroupPrincipal.FindByIdentity(上下文,groupName.GetMembers())中的var userPrincipal)
{
//请在这里输入密码
添加(新的MPI.Domain.Entities.Users{First=firstName,Email=mail,Last=lastName});
}
}
}
返回员工;
}
您正在调用的GetMembers
方法将返回该组的所有成员,包括用户和其他组。这是正确的,因为在active directory中,组可以有组成员
要仅获取用户,必须筛选成员。一种方法是使用如下所示的:
foreach (var userPrincipal in
GroupPrincipal
.FindByIdentity(context, groupName)
.GetMembers()
.OfType<UserPrincipal>())
{
string mail = userPrincipal.EmailAddress;
string firstName = userPrincipal.GivenName;
string lastName = userPrincipal.Surname;
employees.Add(
new MPI.Domain.Entities.Users
{
First = firstName,
Email = mail,
Last = lastName
});
}
foreach(在
团体负责人
.FindByIdentity(上下文、组名)
.GetMembers()
.OfType())
{
string mail=userPrincipal.EmailAddress;
string firstName=userPrincipal.GivenName;
字符串lastName=userPrincipal.name;
员工。添加(
新的MPI.Domain.Entities.Users
{
First=firstName,
电子邮件,
Last=lastName
});
}
这样,您将只浏览用户成员。循环变量userPrincipal
的类型也是userPrincipal
(而不是抽象的Principal
类)。因此,您可以访问电子邮件地址
、GivenName
和姓氏
属性来访问电子邮件、用户名和姓氏
顺便说一下,如果您有兴趣递归地查找组的成员,也就是说,您希望查找作为组成员的组的成员,那么有一种方法允许您这样做