使用“SQL”查询活动目录?
-
01-07-2019 - |
题
我只是想知道是否有人知道或制作了 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();
不隶属于 StackOverflow