Как я могу запросить пользователей с просроченным паролем в Active Directory? - PullRequest
4 голосов
/ 18 ноября 2008

Мне нужно запросить в Active Directory список пользователей, срок действия пароля которых истекает. Очевидный (и простой) способ сделать это с помощью:

dsquery user -stalepwd n 

Проблема в том, что мне нужно добавить дополнительные фильтры, чтобы искать только пользователей, которые находятся в определенных группах безопасности. Это трудно сделать с помощью синтаксиса «dsquery user», который имеет встроенную опцию -stalepwd, поэтому я использую опцию «dsquery * -filter», которая позволяет вам использовать синтаксис запроса LDAP. К сожалению, хотя применить другие фильтры с помощью запроса LDAP относительно просто, у меня возникают проблемы с фильтрацией пользователей, у которых возраст пароля превышает n.

Кто-нибудь знает синтаксис (или если это вообще возможно) для фильтрации старых паролей, используя метод "dsquery * -filter" вместо метода "dsquery user -stalepwd".

Ответы [ 2 ]

3 голосов
/ 19 ноября 2008

Вы можете написать запрос LDAP, который сравнивает «устаревшие» пароли, сравнивая атрибут pwdLastSet для объекта пользователя:

(&(objectClass=person)(objectClass=User)(pwdLastSet<=n))

ActiveDirectory использует очень специфический формат для этой отметки времени. Я считаю, что это время файла, но я бы дважды проверил в Интернете.

1 голос
/ 19 ноября 2008

Есть лучшие инструменты, чем dsquery для использования.

FindExpAcc из joeware сделает то же самое, что и stalepwd, и разрешит фильтр через ключ -f.

Фильтр будет выглядеть так:

&(objectCategory=user)(memberof=CN=User Group,OU=Test,DC=foo,dc=com)

Также ознакомьтесь с инструментами adfind и admod из joeware , которые являются более мощными, чем инструменты запросов командной строки от Microsoft, но могут быть немного сложнее для изучения.

...