【发布时间】:2019-03-21 10:19:44
【问题描述】:
我需要从特定类别中获取所有用户及其组。
用户示例:
user | memberof
user1 | CN=group_1,OU=Groupes,OU=CR 1,DC=zcam,DC=ztech
user1 | CN=group_2,OU=Groupes,OU=CR 1,DC=zcam,DC=ztech
user2 | CN=group_2,OU=Groupes,OU=CR 1,DC=zcam,DC=ztech
user3 | CN=group_3,OU=Groupes,OU=CR 2,DC=zcam,DC=ztech
我需要获取memberof 包含OU=Groupes,OU=CR 1,DC=zcam,DC=ztech 的每个用户(我的示例中的user1 和user2)
按照这个文档 (https://docs.microsoft.com/fr-fr/windows/desktop/ADSI/search-filter-syntax) 我尝试了以下语法:
DirectoryEntry ldap = new DirectoryEntry("LDAP://xxx.xxx.xxx.xxx");
using (DirectorySearcher searcher = new DirectorySearcher(ldap))
{
// Works but return everything
searcher.Filter = "(&(objectClass=user)(memberof=*))";
// Works but only for one group
searcher.Filter = "(&(objectClass=user)(memberof=CN=group_1,OU=Groupes,OU=CR 1,DC=zcam,DC=ztechh))";
// Doesn't work because searcher.FindAll().Count returns 0
searcher.Filter = "(&(objectClass=user)(memberof=*,OU=Groupes,OU=CR 1,DC=zcam,DC=ztechh))";
// searcher.FindAll().Count returns 0
foreach (SearchResult result in searcher.FindAll())
{
[...]
}
在此 (https://community.servicenow.com/community?id=community_question&sys_id=00d29fa1db101fc01dcaf3231f96197f) 之后,我尝试将通配符 * 更改为 %,但并没有改变结果。
【问题讨论】:
-
"所有用户和他们的组" - 所以你希望搜索返回用户 和 组对象?
-
改用
System.DirctoryServices.AccountManagement命名空间,这更容易 - docs.microsoft.com/en-us/dotnet/api/…
标签: c# active-directory ldap wildcard directorysearcher