我需要在Active Directory中查询密码即将过期的用户列表。明显(简单)的方法是:
dsquery user -stalepwd n
问题是我需要添加其他过滤器才能查找属于某些安全组的用户。这对于具有内置-stalepwd选项的“dsquery user”语法很难做到,所以我一直在使用“dsquery * -filter”选项,它允许您使用LDAP查询语法。不幸的是,虽然使用LDAP查询相对容易地应用其他过滤器,但我在过滤密码年龄大于n的用户时遇到问题。
有没有人知道使用“dsquery * -filter”方法而不是“dsquery user -stalepwd”方法过滤旧密码的语法(或者甚至可能)。
答案 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的命令行查询工具更强大,但可能有点难学。