![如何通过 Active Directory 随机化或交错密码过期时间?](https://linux22.com/image/609804/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20Active%20Directory%20%E9%9A%8F%E6%9C%BA%E5%8C%96%E6%88%96%E4%BA%A4%E9%94%99%E5%AF%86%E7%A0%81%E8%BF%87%E6%9C%9F%E6%97%B6%E9%97%B4%EF%BC%9F.png)
我们即将实施新的密码政策,要求用户每六个月更改一次密码。我们还需要每个用户更改密码这周。我不想陷入每半年更改一次密码的狂热,而且更愿意随机化或错开密码到期日期。
当我尝试在 ADSI 编辑中修改 pwdLastSet 属性时收到错误。似乎该属性可能是只读的。如果我可以写入它,我不确定直接修改 pwdLastSet 属性是否会产生任何不良影响。
我考虑过实施多重密码策略,但从我所读的内容来看,DFL 2003 不支持多重密码策略,这需要升级(尽管这可能是最终升级的一个不错的借口。)
当所有用户都需要立即更改密码时,我该如何避免每六个月进行一周的全公司密码更改?
答案1
有几种方法可以实现这一点。我尝试通过编程实现随机化,但效果并不好 - 尝试向 pwdLastSet 属性写入除 0 或 -1 之外的任何值都行不通。
我倾向于应用新的密码策略,然后每周使一组用户的密码过期,以分散负载。
您可以使用修改重置上次修改日期。我会抓取一个组(我实际上是从 TXT 文件中导入了一个用户名列表)并要求他们在下次登录时更改密码。
我保存了一个电子表格来了解哪些用户仍需要过期。
这种方法有两个缺点 - 您需要多次运行此脚本,并且用户无法使用他们的第一个复杂密码整整六个月。
答案2
我首先想到的是,选择一组随机用户,在你想要他们的现有密码过期的时间范围之后,再次让他们的密码过期:
$users = get-aduser -filter * | get-random -count <my number of users>
foreach ($user in $users) {Set-ADUser $user -ChangePasswordAtLogon $true}
显然,你需要使用 PowerShell 来完成此示例,但可以使用任何脚本语言完成相同的操作