C# 正在从2 OU中查找Active Directory用户

C# 正在从2 OU中查找Active Directory用户,c#,.net,active-directory,C#,.net,Active Directory,我有一个.Net应用程序,可以从特定OU(ABCUsers)中的active directory读取用户。代码如下: string DomainIP = "some domain IP"; string ContainerConnectionString = "OU=ABCUsers,DC=test,DC=com"; PrincipalContext domain = new PrincipalContext(ContextType.Domain, DomainIP, ContainerConn

我有一个.Net应用程序,可以从特定OU(ABCUsers)中的active directory读取用户。代码如下:

string DomainIP = "some domain IP";
string ContainerConnectionString = "OU=ABCUsers,DC=test,DC=com";
PrincipalContext domain = new PrincipalContext(ContextType.Domain, DomainIP, ContainerConnectionString, ContextOptions.SimpleBind);

PrincipalSearcher searcher = new PrincipalSearcher();
UserPrincipal findUser = new UserPrincipal(domain);
findUser.SamAccountName = "some username";
searcher.QueryFilter = findUser;
UserPrincipal foundUser = (UserPrincipal)searcher.FindOne();
上面的代码工作正常,但我需要更改代码,以便它检索用户,无论他/她是在OU=ABCUsers还是OU=XYZUsers中,但不在任何其他OU中。

(更新:再次阅读)

函数/循环解决方案 (尽管如此,我还是更喜欢下面带有全局目录的解决方案,因为它的代码更少,更健壮。)

由于在不使用如下所述的全局目录时,它可能无法与
-LDAP搜索字符串一起工作,因此您可以在两个OU中重复上面的代码(我猜是可以工作的),例如,将其放在单独的函数(伪代码)中:


全局催化剂溶液 正如我所说,用一些
-搜索字符串等进行搜索对我来说不起作用,而且看起来,您可能必须使用全局目录服务(在默认的端口3268,如果您有
MS Active Directory
,否则我不知道其他目录服务是否有此功能)。
我想您必须在
PrincipalContext
上指定这一点,它可能会使用其他一些默认设置(389?)。

添加了下面的循环/函数解决方案,感谢您的帮助。我会认为这是一个答案,因为它可能会帮助别人,但我所寻找的是做它而不必循环/重复。谢谢
UserPrincipal findUserInOu( String ou ) {
   string DomainIP = "some domain IP";
   string ContainerConnectionString = "OU=" + ou + ",DC=test,DC=com";
   // ... above code continued
}

UserPrincipal foundUser = findUserInOu("ABCUsers");
if ( foundUser == null )
  foundUser = findUserInOu("XYZUsers");