【发布时间】:2012-02-26 08:28:38
【问题描述】:
当我运行这个查询时
// Next row is used to login to AD
DirectoryEntry entry = GetEntry(domain, adminUser, adminPassword);
// Here starts the query
DirectorySearcher search = new DirectorySearcher(entry)
{
SearchScope = SearchScope.Subtree,
Filter = "(&" +
"(objectClass=user)" +
// "(distinguishedname=*OU=Ingegneria*)" +
"(givenname=s*)" +
"(samaccountname=*100)" +
")"
};
search.PropertiesToLoad.Add("distinguishedname");
SearchResultCollection result = search.FindAll();
我得到了六个条目,这是正确的。
所有记录,如果我使用record.GetDirectoryEntry() 有
distinguishedname: CN=xxx,OU=Utenti,OU=Ingegneria,DC=xxx,DC=xxx
无论如何,如果我删除对过滤器的distinguishedname 部分的评论,我将获得零条目!!
我也尝试使用search.PropertiesToLoad.Add("distinguishedname");,但没有运气。
如何在过滤器中搜索distinguishedname?
更新:
如果我尝试在 filter 中使用 "(distinguishedname=*)" + ,我仍然会得到六条记录,所以我想我可以搜索专有名称...
UPDATE2:
我也尝试使用Search Active Directory for an OU using a partial path to the OU中的代码:
Filter = "(&(objectClass=user)(ou=Ingegneria))";
但我有零个条目(如果我删除 (objectClass=user) 部分,我有两个)
【问题讨论】:
-
尝试删除
OU=Ingegneria*看看会发生什么 -
@Shai:我需要过滤器的那部分...无论如何看看我的更新。
-
似乎与 stackoverflow.com/questions/5872838/… 重复 - 这可能有助于您按 OU 进行搜索。
-
@AvnerShahar-Kashtan:对不起......它没有帮助:我应该将整个查询更改为首先获取 OU,然后查询它们中的每一个吗?如果是这样,我真的不喜欢这个主意...谢谢
标签: c# active-directory