如果我有一个活动目录组的名称,如何获取成员列表或者他们的电子邮件地址?
void Main()
{
string groupName = "somegroup";
string domainName = "somedomain";
using(PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domainName))
{
using(GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, groupName))
{
var sams = from x in grp.GetMembers(true) select new {x.SamAccountName, };
var users = from sam in sams.Distinct()
let usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, sam.SamAccountName)
select new { usr.SamAccountName, usr.DisplayName, usr.EmailAddress};
//do something with users...
}
}
}
System.DirectoryServices.AccountManagement
,它具有更好、更易于使用的接口(PrincipalContext
和 UserPrincipal
),这样使用起来更加高效。DirectoryEntry
是非常低级且难以使用的。 - marc_s