我需要在OU中搜索用户。到目前为止我的解决方案如下: -
// s = "ou=myou1,ou=myou2,ou=muou3,dc=myad,dc=com" & t = "myad.com"
PrincipalContext context = new PrincipalContext(ContextType.Domain, t, s);
UserPrincipal user = UserPrincipal.FindByIdentity(context, "boborwhoever");
if (user != null) found him!
(请原谅显而易见的伪代码,但你得到了图片)
我遇到的问题是虽然我的userPrincipal用户已经填充并且我发现'bob'如果他在'myou3'我可以将s更改为“ou = myou1,dc = myad,dc = com”并仍然找到“鲍勃”。所以似乎UserPrincipal.FindByIdentity也检查子OU。
如何检查OU说明的?或者也许我哩了,应该以更好的方式做整件事: - )
由于 史蒂夫
答案 0 :(得分:1)
我就是这样做的
using System.DirectoryServices
DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://**Your connection string here**";
de.AuthenticationType = AuthenticationTypes.Secure;
DirectorySearcher search = new DirectorySearcher(de);
search.Filter = "(SAMAccountName=" + account + ")";
//What properties do we want to return?
search.PropertiesToLoad.Add("displayName");
search.PropertiesToLoad.Add("mail");
search.SearchScope = SearchScope.OneLevel //this makes it only search the specified level
SearchResult result = search.FindOne();
if (result != null)
{
//Get Him! }
else
{
//Not Found
}
在sharepoint工作流程中使用了它,它运行良好。