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

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

有帮助吗?

解决方案

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

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();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top