C# 如何在从Active Directory获取用户列表时跳过特定的组织单位(OU)

C# 如何在从Active Directory获取用户列表时跳过特定的组织单位(OU),c#,active-directory,ldap,ldap-query,directorysearcher,C#,Active Directory,Ldap,Ldap Query,Directorysearcher,我正在从Active Directory中提取一个用户列表,但是我想跳过一个名为“ServiceAccounts”的特定组织单位。我的理解是,以下行无法解决我的问题,因为通配符不适用于DN: search.Filter = "(&(objectCategory=person)(objectClass=user)(!(distinguishedName=*ServiceAccounts*))(mail=*))"; 此OU包含大约150多个服务帐户的列表,我在生成员工列表时不需要这些帐户。

我正在从Active Directory中提取一个用户列表,但是我想跳过一个名为“ServiceAccounts”的特定组织单位。我的理解是,以下行无法解决我的问题,因为通配符不适用于DN:

search.Filter = "(&(objectCategory=person)(objectClass=user)(!(distinguishedName=*ServiceAccounts*))(mail=*))";
此OU包含大约150多个服务帐户的列表,我在生成员工列表时不需要这些帐户。我唯一的问题是,如何不从特定的OU获取记录


谢谢,非常感谢

在LDAP中,通常不允许在DN值内进行子字符串搜索

Microsoft Active Directory

由于微软的Active Directory只是规则,我认为这是不可能的

此外,默认情况下,“ou”值不会填充到用户条目上,或者您可以使用:

(!(ou=ServiceAccounts))
在过滤器内

某些编程环境似乎具有以下语法:

(&(objectClass=user)(!(distinguishedName:=%ServiceAccounts%)))
也许有人可以提供更多关于树结构的信息来解决这个问题