我有一些代码可以查询Active Directory以验证用户是否存在,我正在尝试验证大约1300个ID的长列表。我已经尝试过几种方法来验证用户帐户(包括LINQ到AD、DirectorySearcher(带或不带父目录项)以及链接到WinNT://路径的DirectoryEntry)。每次它都会返回并说有几个用户不存在。如果我在代码中硬编码他们的用户ID并逐个执行,它会验证存在性。如果我尝试在foreach循环中执行,我会得到几个错误的负面结果。
这是我现在正在使用的代码...
static string[] userIDs = new string[] "user1","user2","user3","user4","user5","user6","user7","user8"...,"user1300"};
List<string> nonExistingUsers = new List<string>();
List<string> ExistingUsers = new List<string>();
foreach (string s in userIDs)
{
DirectorySearcher search = new DirectorySearcher();
search.Filter = String.Format("(SAMAccountName={0})", s);
search.PropertiesToLoad.Add("cn");
DirectorySearcher ds = new DirectorySearcher(de, "(&(objectClass=user)(cn=" + s + "))", new string[] { "Name" }, SearchScope.Subtree);
SearchResultCollection resultCollection = ds.FindAll();
SearchResult result = search.FindOne();
if (result != null)
ExistingUsers.Add(s);
else
nonExistingUsers.Add(s);
}
任何建议或原因可以解释为什么我收到了误报负面反馈?