【发布时间】:2013-03-11 20:40:13
【问题描述】:
如果我有一个 Active Directory 组的名称,我如何获得成员列表或其电子邮件地址?
【问题讨论】:
标签: c# active-directory
如果我有一个 Active Directory 组的名称,我如何获得成员列表或其电子邮件地址?
【问题讨论】:
标签: c# active-directory
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...
}
}
}
【讨论】:
在这个 url 中有一篇关于 AD 的完整文章,使用 C#http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C#42,用户存储为 DiretoryEntry 查看属性 Properties http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.properties(v=vs.100).aspx
【讨论】:
System.DirectoryServices.AccountManagement,它具有更好、更易于使用的界面(PrincipalContext 和 UserPrincipal),使用效率更高. DirectoryEntry 是非常低级的并且出了名的难以使用....