6

我只是想知道是否有人知道或制作了 Active Directory 的包装器以便能够在 .net 中轻松查询它?有点像“LINQ-to-ActiveDirectory”或一些 SQL 方言,即能够执行“SELECT DISTINCT(DEPARTMENT) FROM /Users/SomeOU/AnotherOU”或“SELECT user FROM domain”等。

据我所知,可以以“SQLesque”方式查询 WMI 和 IIS,我只是想知道 Active Directory 是否也可以进行类似的操作,而无需学习另一种查询语言(LDAP)?

4

1 回答 1

13

LINQ to Active Directory 实现了一个自定义 LINQ 查询提供程序,允许查询 Active Directory 中的对象。在内部,查询被转换为使用 System.DirectoryServices .NET Framework 库发送到服务器的 LDAP 过滤器。

http://www.codeplex.com/LINQtoAD

样本(来自网站):

// NOTE: Entity type definition "User" omitted in sample - see samples in release.

var users = new DirectorySource<User>(ROOT, SearchScope.Subtree);
users.Log = Console.Out;

var res = from usr in users
          where usr.FirstName.StartsWith("B") && usr.Office == "2525"
          select new { Name = usr.FirstName + " " + usr.LastName, usr.Office, usr.LogonCount };

foreach (var u in res)
{
    Console.WriteLine(u);
    u.Office = "5252";
    u.SetPassword(pwd);
}

users.Update();
于 2008-09-18T07:57:40.230 回答