Как я могу найти компьютеры с LastLogonTimestamp меньше определенной даты ИЛИ пустым - PullRequest
0 голосов
/ 23 мая 2019

Следующий код возвращает все принципы компьютера, которые имеют дату входа в систему до 3 месяцев назад, но не получают данные с нулем для lastlogontimestamp

PrincipalContext context = new PrincipalContext(ContextType.Domain);
PrincipalSearchResult<ComputerPrincipal> computers = ComputerPrincipal.FindByLogonTime(context, DateTime.Now.AddMonths(-3), MatchType.LessThanOrEquals);

Как элегантно добавить к "компьютерам" те, которыеимеют нулевые значения "lastlogontimestamp"?

1 Ответ

1 голос
/ 23 мая 2019

Я покончил с ComputerPrincipal.FindByLogonTime, так как он не может найти нулевой LogonTime и пошел со старой классикой, DirectorySearcher

DirectorySearcher Computersearcher = new DirectorySearcher
{
    SearchRoot = new DirectoryEntry(baseOU),
    Filter = "(&(whenCreated<=" + WhenCreated + ")(!(userAccountControl=2))(|(lastLogonTimestamp<=" + DateInt + ")(lastLogonTimestamp=0))(objectClass=computer))",
    SearchScope = SearchScope.Subtree,
    PageSize = 1000,
    Sort = new SortOption("Name", SortDirection.Ascending)
        };
    SearchResultCollection ComputerResults = Computersearcher.FindAll();
}

Это имеет неприятный побочный эффект, что наблюдаемая коллекция, которую яиспользуется для создания, больше не отображает имя в моем списке WPF (несмотря на настройку DisplayNamePath).

Совершенно новая проблема, но текущая проблема "решена"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...