2

LINQ to LDAPを使用してActiveDirectoryにアクセスしたいのですが、その中ですべてのユーザーのリストを取得したいのですが、
どうすればよいですか?

4

2 に答える 2

8

以下のようなものを試すことができます。

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; }

}

このコードを使用して、コンソールアプリから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;
}

詳細については、Linq To Active DirectoryでC#を使用するすべてのユーザーを取得するを確認してください

およびLINQtoLDAP

.NET CoreまたはStandardについては、以下のChrisDの回答を参照してください。

この主題に関する包括的な知識を得るには、C#を介して(ほぼ)ActiveDirectoryのすべてをチェックしてください

これがお役に立てば幸いです。

于 2013-01-13T17:13:18.293 に答える