4

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

dsquery user -stalepwd n 

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

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

4

2 回答 2

3

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

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

ActiveDirectory 对此时间戳使用一种非常特殊的格式。我相信这是文件时间,但我会在网上仔细检查。

于 2008-11-18T21:40:17.887 回答
2

有比 dsquery 更好的工具可以使用。

来自joeware的 FindExpAcc 将执行与 stalepwd 相同的操作,并允许通过其 -f 开关进行过滤。

过滤器将如下所示:

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

还可以查看joeware的 adfind 和 admod 工具,它们比 Microsoft 的命令行查询工具更强大,但可能更难学习。

于 2008-11-18T21:15:54.270 回答