我正在使用LinqToLdap并尝试使用LinqToLdap提供的示例来查找AD中的所有用户。但没有成功。首先,我尝试修改模型以更好地适应我们的AD
[DirectorySchema("DC=corp,DC=intern", ObjectClass = "User")]
public class User : DirectoryObjectBase{
[DistinguishedName]
public string DistinguishedName { get; set; }
[DirectoryAttribute("cn", ReadOnly = true)]
public string CommonName { get; set; }
[DirectoryAttribute]
public string Title { get; set; }
[DirectoryAttribute(StoreGenerated = true)]
public Guid ObjectGuid { get; set; }
[DirectoryAttribute(StoreGenerated = true)]
public SecurityIdentifier ObjectSid { get; set; }
[DirectoryAttribute("memberOf", ReadOnly = true)]
public Collection<string> GroupMemberships { get; set; }
}
用
查询public class LinqToLdapProvider{
private LdapConfiguration _cfg;
public LinqToLdapProvider(string domain){
_cfg = new LdapConfiguration();
_cfg.ConfigurePooledFactory(domain)
.MinPoolSizeIs(1)
.MaxPoolSizeIs(50)
.AuthenticateAs(new NetworkCredential("MyDomain.Username","MySecretPAssword"));
}
public void Query(){
using (var context = new DirectoryContext(_cfg)) {
context.Log = Console.Out;
var user = context.Query<User>(); // I expected this to return all users
}
}
}
但结果我得到了一个非常庞大的列表,其中包含所有服务器和其他内容......我试图在文档中找到更多信息,并尝试修改UserSchema Attribbute of User类位,但没有运气。
以下是我尝试查询用户是绿色笔画的用户的路径。
答案 0 :(得分:1)
您需要更具体地使用您的映射。将命名上下文更改为用户OU,或将ObjectClass =“User”ObjectCategory =“Person”添加到架构映射中。有关详细信息,请参阅this。