C# 如何使用LINQ to LDAP获取active directory中的用户列表?
我想使用LINQ to LDAP访问ActiveDirectory,并想获得该目录中所有用户的列表C# 如何使用LINQ to LDAP获取active directory中的用户列表?,c#,winforms,linq,active-directory,C#,Winforms,Linq,Active Directory,我想使用LINQ to LDAP访问ActiveDirectory,并想获得该目录中所有用户的列表 我该怎么做呢?你可以试试下面的方法 using ActiveDs; using BdsSoft.DirectoryServices.Linq; using System.Linq.Expressions; using System.DirectoryServices; [DirectorySchema( "user", typeof( IADsUser ) )] class User {
我该怎么做呢?你可以试试下面的方法
using ActiveDs;
using BdsSoft.DirectoryServices.Linq;
using System.Linq.Expressions;
using System.DirectoryServices;
[DirectorySchema( "user", typeof( IADsUser ) )]
class User
{
public string Name { get; set; }
public string sAMAccountName { get; set; }
public string objectCategory { get; set; }
public string mail { get; set; }
public string Description { get; set; }
[DirectoryAttribute( "PasswordLastChanged", DirectoryAttributeType.ActiveDs )]
public DateTime PasswordLastSet { get; set; }
[DirectoryAttribute("distinguishedName")]
public string Dn { get; set; }
[DirectoryAttribute("memberOf")]
public string[] Groups { get; set; }
}
使用此代码从控制台应用程序访问广告,将广告服务器置于以下代码中:
static void Main( string[] args )
{
IEnumerable<User> users = GetADUsers();
Console.WriteLine( "Users: " + users.Count().ToString() );
}
static DirectoryEntry ROOT = new DirectoryEntry( "LDAP://MyADDomainLocation.com" );
private static IEnumerable<User> GetADUsers()
{
IEnumerable<User> users;
var usersDS = new DirectorySource<User>( ROOT, SearchScope.Subtree );
users = from usr in usersDS
where usr.Name == "A*" // FIlter A then any character(s)
select usr;
users = users.OrderBy( user => user.Name ).ToList(); // Sort them alphabetically by name.
return users;
}
static void Main(字符串[]args)
{
IEnumerable users=GetADUsers();
Console.WriteLine(“用户:+Users.Count().ToString());
}
静态目录条目根=新目录条目(“LDAP://MyADDomainLocation.com”);
私有静态IEnumerable GetADUsers()
{
i无数用户;
var usersDS=newdirectorySource(根,SearchScope.Subtree);
users=来自usersDS中的usr
其中usr.Name==“A*”//过滤A,然后过滤任意字符
选择usr;
users=users.OrderBy(user=>user.Name).ToList();//按名称的字母顺序排序。
返回用户;
}
有关更多信息,请查看
及
有关.NET核心或标准版的信息,请参见下面的
要获得有关此主题的全面知识,请检查
我希望这能对你有所帮助。很抱歉回答这么一个老问题,但我觉得它需要更新的答案。我为此编写了一个.NET标准库:
- Core(,)独立于平台的核心库,它可以将表达式转换为LDAP筛选器,并再次解析它们
- Linq2Ldap.Protocols(,)-围绕Linq2Ldap.Core+System.DirectoryServices.Protocols的精简包装器
- Linq2Ldap(,)-System.DirectoryServices的精简包装
它的核心可以在
Expression
s和LDAP过滤器之间传输。表达式引用的模型(T
)必须实现一个接口,IEntry
,该接口基本上定义了一个奇特的索引器类,您可以这样使用:m=>m[“cn”]==“someuser”
。您还可以创建特殊属性来别名目录属性。有关更多信息,请查看project wiki。非常感谢我的朋友,这很好,我还有一个问题:您的代码在带有AD的服务器上运行,我可以在另一台计算机(加入域的计算机)上运行此应用程序在这种情况下,LDAP地址是什么?@Sirwanafi很高兴听到它有帮助。关于你的问题,你可以参考这篇文章@Sampath你会推荐使用LINQ到LDAP吗?@user2609980是的。如果你能读到这篇文章,你也会意识到这一点。@Sampath你能帮我回答我的问题吗?我不明白也找不到如何定义目录模式
。我的帖子中包含了与此主题相关的非常有用的链接。请检查一下。