使用PowerShell重置AD用户密码时,如何启用下次登录需改密码功能?
AD密码重置脚本未触发「下次登录必须更改密码」的修复方案
你的脚本问题出在两个核心点:一是Set-ADAccountPassword -Reset操作会重置AD用户的部分密码相关属性,可能覆盖后续的ChangePasswordAtLogon设置;二是如果目标用户开启了「密码永不过期」选项,ChangePasswordAtLogon会直接失效。
修复后的脚本
param( [Parameter(Mandatory=$true)] [string]$Identity, [Parameter(Mandatory=$true)] [string]$NewPassword, [Parameter(Mandatory=$true)] [PSCredential]$Credential ) # 重置目标用户密码 Set-ADAccountPassword -Identity $Identity -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $NewPassword -Force) -Credential $Credential # 强制开启「下次登录必须改密码」,同时关闭「密码永不过期」(避免属性冲突) Set-ADUser -Identity $Identity -ChangePasswordAtLogon $true -PasswordNeverExpires $false # 输出结果JSON [pscustomobject]@{ Identity = $Identity NewPassword = $NewPassword } | ConvertTo-Json -Depth 1
关键修复说明
- 移除硬编码凭证:改用
PSCredential参数传入管理员凭证,彻底避免明文密码泄露风险 - 解决属性冲突:强制关闭
PasswordNeverExpires,因为该属性开启时,AD会直接忽略ChangePasswordAtLogon设置 - 确保设置生效:在密码重置后执行
Set-ADUser操作,覆盖AD自动重置的属性值,保证「下次改密码」的配置生效
内容的提问来源于stack exchange,提问作者Mike B
相关产品推荐
相关产品推荐

