【发布时间】:2018-01-16 06:59:31
【问题描述】:
我正在尝试查询上次登录时间超过 30 天的所有用户:
var date = DateTime.Today.AddDays(-30).Ticks.ToString();
using (var parentEntry = new DirectoryEntry($"LDAP://{Environment.UserDomainName}/OU=Company,DC=DOMAIN,DC=COM"))
using (var directorySearch = new DirectorySearcher(parentEntry))
{
directorySearch.Filter = $"(&(objectClass=user)(lastLogonTimestamp<={date})(!userAccountControl:1.2.840.113556.1.4.803:=2))";
directorySearch.SearchScope = SearchScope.Subtree;
查询确实返回了一堆启用的用户,但他们的 lastLogonTimestamp 值不超过 30 天前。
例如,这里是一些返回日期的示例:
11/01/2018 8:43:17 PM
14/01/2018 5:14:26 PM
13/01/2018 10:53:58 AM
15/01/2018 9:00:27 AM
15/01/2018 10:36:02 AM
15/01/2018 12:07:02 PM
我做错了什么?
我可以确认 date 值确实包含 30 天前的日期(在本例中为 2017 年 12 月 17 日)。
【问题讨论】:
标签: c# active-directory ldap