Запрашиваете Active Directory с помощью «SQL»? - PullRequest
6 голосов
/ 18 сентября 2008

Мне просто интересно, кто-нибудь знает или создал оболочку для Active Directory, чтобы можно было легко запрашивать ее в .net? Вроде как «LINQ-to-ActiveDirectory» или некоторый SQL-диалект, то есть чтобы иметь возможность делать «SELECT DISTINCT (DEPARTMENT) FROM / Users / SomeOU / AnotherOU» или «SELECT user FROM domain» или что-то еще.

Насколько я знаю, можно запрашивать WMI и IIS "SQLesque", мне просто интересно, возможно ли нечто подобное и для Active Directory, без необходимости изучать еще один язык запросов (LDAP)?

1 Ответ

13 голосов
/ 18 сентября 2008

LINQ для 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...