如何在Active Directory中查询密码过期的用户?

时间:2008-11-18 17:35:16

标签: active-directory ldap dsquery

我需要在Active Directory中查询密码即将过期的用户列表。明显(简单)的方法是:

dsquery user -stalepwd n 

问题是我需要添加其他过滤器才能查找属于某些安全组的用户。这对于具有内置-stalepwd选项的“dsquery user”语法很难做到,所以我一直在使用“dsquery * -filter”选项,它允许您使用LDAP查询语法。不幸的是,虽然使用LDAP查询相对容易地应用其他过滤器,但我在过滤密码年龄大于n的用户时遇到问题。

有没有人知道使用“dsquery * -filter”方法而不是“dsquery user -stalepwd”方法过滤旧密码的语法(或者甚至可能)。

2 个答案:

答案 0 :(得分:3)

您可以编写一个LDAP查询,通过比较用户对象上的pwdLastSet属性来比较“陈旧”密码:

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

ActiveDirectory对此时间戳使用非常特定的格式。我认为这是一个文件时间,但我会在网上仔细检查。

答案 1 :(得分:1)

有比dsquery更好的工具。

来自joeware的

FindExpAcc将与stalepwd一样,并允许通过其-f开关过滤。

过滤器看起来像:

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

另请查看来自joeware的adfind和admod工具,这些工具比Microsoft的命令行查询工具更强大,但可能有点难学。

相关问题