C# 正在从2 OU中查找Active Directory用户
我有一个.Net应用程序,可以从特定OU(ABCUsers)中的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
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");