Interrogation de Active Directory avec & # 8220; SQL & # 8221 ;?
-
01-07-2019 - |
Question
Je me demande simplement si quelqu'un sait ou a créé un wrapper autour d'Active Directory pour pouvoir l'interroger facilement dans .net? Un peu comme " LINQ-to-ActiveDirectory " ou un dialecte SQL, c’est-à-dire pouvoir faire "SELECT DISTINCT (DEPARTMENT) FROM / Users / SomeOU / AnotherOU" ou " SELECT utilisateur du domaine " ou peu importe.
Pour autant que je sache, il est possible d'interroger WMI et IIS dans un fichier "SQLesque". Ainsi, je me demande simplement si quelque chose de similaire est possible pour Active Directory également, sans avoir à apprendre un autre langage de requête (LDAP)?
La solution
LINQ to Active Directory implémente une Fournisseur de requêtes LINQ personnalisé qui permet interroger des objets dans Active Directory. En interne, les requêtes sont traduites dans les filtres LDAP qui sont envoyés à le serveur utilisant le System.DirectoryServices .NET Bibliothèque de framework.
http://www.codeplex.com/LINQtoAD
Exemple (du site):
// 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();