使用 Powershell 确定 AD 用户的密码复杂性

Using Powershell to determine AD user's password complexity

我正在寻找可以让我查看 AD 用户列表及其密码复杂性的 Powershell 脚本。

设置“永不过期”以及了解他们上次更改密码的时间等详细信息也将是一笔巨大的财富。

感谢您的帮助!

存储在 ActiveDirectory 中的用户的所有可用密码相关信息都可以列出:

Get-Aduser username -Properties * | Select *Password*
AllowReversiblePasswordEncryption : False
badPasswordTime                   : 132652374477430749
CannotChangePassword              : False
LastBadPasswordAttempt            : 5/11/2021 4:10:47 PM
PasswordExpired                   : False
PasswordLastSet                   : 5/10/2021 8:29:09 AM
PasswordNeverExpires              : False
PasswordNotRequired               : False

用户设置的所有密码都必须满足您可以在此处找到的默认域密码策略要求。复杂性要求只能在组策略编辑器中查看:

# Last policy change:
Get-ADObject -Identity (Get-ADDefaultDomainPasswordPolicy).objectGuid -Properties whenchanged | Select WhenChanged

# Policy Settings:
Get-ADDefaultDomainPasswordPolicy

ComplexityEnabled           : True
DistinguishedName           : DC=subdomain,DC=domain,DC=local
LockoutDuration             : 00:30:00
LockoutObservationWindow    : 00:10:00
LockoutThreshold            : 3
MaxPasswordAge              : 90.00:00:00
MinPasswordAge              : 30.00:00:00
MinPasswordLength           : 8
objectClass                 : {domainDNS}
objectGuid                  : 00000000-6cfb-4bea-ba1b-000000000000
PasswordHistoryCount        : 12
ReversibleEncryptionEnabled : False

请注意,此政策不适用于某些使用该功能设置其他用户密码的管理员角色,也不适用于自上次政策更新后未更改的密码。

如果您在域控制器上拥有本地管理员访问权限,您绝对可以从中转储凭据哈希,尝试全部破解它们,并检查它们的复杂性。 不要这样做。 考虑戳密码根本不是个好主意。

如果您担心其他人的密码强度,设置新要求,使现有密码过期,然后继续。