从ADGroup获取电子邮件地址列表
答
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...
}
}
}
答
约与C#http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C#42,用户AD被存储为DiretoryEntry良好和完整articule审查财产属性 http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.properties(v=vs.100).aspx
+1
对于.NET 3.5和较新的,你应该开始寻找到使用' System.DirectoryServices.AccountManagement',它有一个更好,更容易使用的接口('PrincipalContext'和'UserPrincipal'),它的使用效率更高。 'DirectoryEntry'是非常低级的,并且非常难以使用.... – 2013-03-11 22:02:14
这很好用!我可以获取用户信息,但没有看到每个用户的电子邮件地址。我怎样才能得到每个成员的电子邮件地址? – Jerry 2013-03-12 13:32:34
你走了。当然有各种方式循环访问数据。重要的是您可以通过SamAccountName获取UserPrincipal。 UserPrincipal具有你想要的数据。 – 2013-03-12 14:50:06