簡體   English   中英

如何使用LINQ to LDAP獲取活動目錄中的用戶列表?

[英]how can get List of users in active directory using LINQ to LDAP?

我想使用LINQ to LDAP來訪問ActiveDirectory,並且想要獲取其中的所有用戶列表
我怎樣才能做到這一點?

您可以嘗試以下類似方法。

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

有關更多信息,請檢查“將所有使用C#的用戶與Linq一起使用到Active Directory”

LINQ to LDAP

對於.NET Core或Standard ,請參閱下面的Chris D的答案

有關此主題的全面知識,請通過C#檢查(幾乎)Active Directory中的所有內容

希望對您有幫助。

很抱歉回答這樣一個老問題,但我認為它需要更新的答案。 我為此編寫了一個.NET標准庫:

  • Linq2Ldap.Core( NuGetGitHub )與平台無關的核心庫,可以將Expressions轉換為LDAP過濾器,然后再次解析出來。

它具有兩個Active Directory包裝器庫:

  • Linq2Ldap.Protocols( NuGetGitHub )-Linq2Ldap.Core + System.DirectoryServices.Protocols的瘦包裝。
  • Linq2Ldap( NuGetGitHub )-System.DirectoryServices的精簡包裝。

它的核心可以在Expression<Func<T, bool>>和LDAP過濾器之間轉換。 Expressions引用的模型( T )必須實現一個接口IEntry ,該接口基本上定義了您要使用的精美索引器類,如下所示: m => m["cn"] == "someuser" 您也可以創建特殊屬性來別名目錄屬性。 請參閱項目Wiki了解更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM