Запрашивать Active Directory с помощью “SQL”?
-
01-07-2019 - |
Вопрос
Мне просто интересно, знает ли кто-нибудь или создал оболочку вокруг Active Directory, чтобы иметь возможность легко запрашивать ее в .net?Что-то вроде "LINQ-to-ActiveDirectory" или какого-то диалекта SQL, т.е.чтобы иметь возможность делать "ВЫБРАТЬ ОТДЕЛЬНЫЙ (ОТДЕЛ) ИЗ / Users / SomeOU / AnotherOU" или "ВЫБРАТЬ пользователя ИЗ домена" или что-то еще.
Насколько я знаю, можно запрашивать WMI и IIS "SQLesque" способом, мне просто интересно, возможно ли что-то подобное и для Active Directory, без необходимости изучать еще один язык запросов (LDAP)?
Решение
LINQ to 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();