使用“SQL”查询Active Directory?

时间:2008-09-18 07:57:06

标签: .net active-directory ldap ldap-query

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

据我所知,有可能以“SQLesque”的方式查询WMI和IIS,我只是想知道Active Directory是否也有类似的东西,而不必学习另一种查询语言(LDAP)?

1 个答案:

答案 0 :(得分:13)

  

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

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();