如何获取所有Active Directory用户的用户名和显示名称

时间:2016-04-12 06:48:37

标签: c# asp.net asp.net-mvc-5 active-directory

我有一个使用ASP.Net MVC 5的Intranet应用程序

我需要查询所有Active Directory用户的用户名

我在网上搜索了我发现的2个有用的帖子:     1- How can I get a list of users from active directory?

2- http://www.codeproject.com/Tips/599697/Get-list-of-Active-Directory-users-in-Csharp

当我查询时,我可以获取Name属性,但我无法获取活动目录用户名

我可以获得所有Active Directory用户用户名的任何解决方案吗?

贝洛是我的代码:

        List<TempUsers> MyTempUser = new List<TempUsers>();

        var context = new PrincipalContext(ContextType.Domain, "MyDomain.com");
        var searcher = new PrincipalSearcher(new UserPrincipal(context));

        foreach (var result in searcher.FindAll())
        {
            DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;
            MyTempUser.Add(new TempUsers { UserName = de.Properties["Name"].Value.ToString() });


        }

2 个答案:

答案 0 :(得分:0)

您要查找的媒体资源名称为sAMAccountNameHere's可用属性列表。

答案 1 :(得分:0)

我这样做的方式非常好:

1-添加对Active Directory服务DLL的引用

2-在控制器中添加:

 using System.DirectoryServices.AccountManagement;

比我创建了一个将所有Active Directory用户存储在数据库表中的函数  bellow是代码希望帮助某人需要它。

    public ActionResult Create()
    {


        List<MyADUsers> TheAllADUsers = new List<MyADUsers>();

        var context = new PrincipalContext(ContextType.Domain, "MyDoman.org");
        var searcher = new PrincipalSearcher(new UserPrincipal(context));

        foreach (var result in searcher.FindAll())
        {

            TheAllADUsers.Add(new MyADUsers { ADUserName = result.SamAccountName, AD_IsMemberOf = result.UserPrincipalName, FullName = result.Name });

        }

        db.MyADUsersContext.AddRange(TheAllADUsers);
        db.SaveChanges();


        return View();
    }