【发布时间】:2012-05-10 14:16:35
【问题描述】:
我正在尝试使用 LDAP 查询来返回过去 24 小时内创建的所有计算机对象。我的代码目前如下所示:
//Declare new DirectoryEntry and DirectorySearcher
DirectoryEntry domainRoot = new DirectoryEntry("LDAP://rootDSE");
string rootOfDomain = domainRoot.Properties["rootDomainNamingContext"].Value.ToString();
DirectorySearcher dsSearch = new DirectorySearcher(rootOfDomain);
//Set the properties of the DirectorySearcher
dsSearch.Filter = "(&(objectClass=Computer)(whenCreated>" + dateFilter.ToString() + "))";
dsSearch.PageSize = 2000;
dsSearch.PropertiesToLoad.Add("distinguishedName");
dsSearch.PropertiesToLoad.Add("whenCreated");
dsSearch.PropertiesToLoad.Add("description");
dsSearch.PropertiesToLoad.Add("operatingSystem");
dsSearch.PropertiesToLoad.Add("name");
//Execute the search
SearchResultCollection computersFound = dsSearch.FindAll();
此代码不返回任何对象,并且我确定在过去 24 小时内创建了帐户。
编辑:我使用以下代码解决了这个问题:
GetCompList(DateTime.Now.AddDays(-1)); //This sets the filter to one day previous
//Declare new DirectoryEntry and DirectorySearcher
DirectoryEntry domainRoot = new DirectoryEntry("LDAP://rootDSE");
string rootOfDomain = domainRoot.Properties["rootDomainNamingContext"].Value.ToString();
DirectorySearcher dsSearch = new DirectorySearcher(rootOfDomain);
//Set the properties of the DirectorySearcher
dsSearch.Filter = "(&(objectClass=Computer)(whenCreated>=" + dateFilter.ToString("yyyyMMddHHmmss.sZ") + "))";
dsSearch.PageSize = 2000;
dsSearch.PropertiesToLoad.Add("distinguishedName");
dsSearch.PropertiesToLoad.Add("whenCreated");
dsSearch.PropertiesToLoad.Add("description");
dsSearch.PropertiesToLoad.Add("operatingSystem");
dsSearch.PropertiesToLoad.Add("name");
//Execute the search
SearchResultCollection computersFound = dsSearch.FindAll();
秘诀就是:
dsSearch.Filter = "(&(objectClass=Computer)(whenCreated>=" + dateFilter.ToString("yyyyMMddHHmmss.sZ") + "))";
【问题讨论】:
-
是的,您的问题是什么?你遇到了什么错误?虽然我是用 Java 做的,但想法是一样的。
-
请不要在标题前加上“C# -”之类的前缀。这就是标签的用途。
-
我已经解决了这个问题。抱歉原版太差了,我一整天都在忙着打架。
-
我重新打开了这个问题。请发布您的解决方案(连同解释 - 需要日期的特定格式)作为答案。谢谢。
-
请把您所说的部分作为您的修复并将其发布为答案;您将能够将其标记为答案,以便其他人更容易找到可能遇到与您一样头痛的问题!
标签: c# filter active-directory ldap