如何使用LINQ to LDAP获取活动目录中的用户列表?

Sir*_*ifi 1 c# linq active-directory winforms

我想使用LINQ to LDAP访问ActiveDirectory,我想获取所有用户的列表,
我该怎么做?

Sam*_*ath 6

你可以试试下面的东西.

using ActiveDs;
using BdsSoft.DirectoryServices.Linq;
using System.Linq.Expressions;
using System.DirectoryServices;

[DirectorySchema( "user", typeof( IADsUser ) )]
class User
{
    public string Name { get; set; }

    public string sAMAccountName { get; set; }

    public string objectCategory { get; set; }

    public string mail { get; set; }

    public string Description { get; set; }

    [DirectoryAttribute( "PasswordLastChanged", DirectoryAttributeType.ActiveDs )]
    public DateTime PasswordLastSet { get; set; }

    [DirectoryAttribute("distinguishedName")]
    public string Dn { get; set; }

    [DirectoryAttribute("memberOf")]
    public string[] Groups { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

使用此代码从控制台应用程序访问AD,将AD服务器放在以下代码中:

static void Main( string[] args )
{

    IEnumerable<User> users = GetADUsers();

    Console.WriteLine( "Users: " + users.Count().ToString() );

}

static DirectoryEntry ROOT = new DirectoryEntry( "LDAP://MyADDomainLocation.com" );

private static IEnumerable<User> GetADUsers()
{
    IEnumerable<User> users;

    var usersDS = new DirectorySource<User>( ROOT, SearchScope.Subtree );

            users = from usr in usersDS
                    where usr.Name == "A*" // FIlter A then any character(s)
                    select usr;

     users = users.OrderBy( user => user.Name ).ToList(); // Sort them alphabetically by name.

    return users;
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请选中使用C#和Linq到Active Directory获取所有用户

LINQ到LDAP

对于.NET Core或Standard,请参阅下面的Chris D的回答.

要获得有关此主题的全面知识,请检查(几乎)通过C#在Active Directory中的所有内容

我希望这会对你有所帮助.