「SQL」を使用して Active Directory にクエリを実行しますか?
-
01-07-2019 - |
質問
Active Directory を .net で簡単にクエリできるようにするためのラッパーを知っている人、またはラッパーを作成した人はいるでしょうか?「LINQ-to-ActiveDirectory」または SQL の方言のようなものです。「SELECT DISTINCT(DEPARTMENT) FROM /Users/SomeOU/AnotherOU」または「SELECT user FROM domain」などを実行できるようにします。
私の知る限り、「SQLesque」方法で WMI と IIS にクエリを実行することは可能ですが、別のクエリ言語 (LDAP) を学習することなく、Active Directory でも同様のことが可能ではないでしょうか?
解決
LINQからActive Directoryは、Active Directoryでオブジェクトをクエリすることを可能にするカスタムLINQクエリプロバイダーを実装します。内部的には、クエリは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