首页/系统/Windows 运维速查/重置域账号密码与强制改密

重置域账号密码与强制改密

Set-ADAccountPassword + ChangePasswordAtLogon:帮用户重置后强制其下次登录自改;改服务账号密码要同步更新全部引用。

Windows 运维速查系统更新于 2026-10-13

命令是干什么的

管理员帮用户重置域密码用 Set-ADAccountPassword:加 -Reset 表示用新密码直接替换,不需要提供旧密码。配合 Set-ADUser -ChangePasswordAtLogon $true 强制用户下次登录自行改密,构成标准的代重置流程。

为什么服务账号不能这么办

服务账号的密码会被程序、计划任务与配置文件引用,改密后必须同步更新所有引用位置,否则会出现批量认证失败。而 ChangePasswordAtLogon 对服务账号更危险:它要求交互登录时改密,服务无法完成这个交互,结果就是起不来。

基本信息

适用平台Windows Server 2008 R2 及以后 + RSAT 的 ActiveDirectory 模块
权限要求重置他人密码需委派权限或域管;用户改自己密码不需要 -Reset
语法Set-ADAccountPassword -Identity 账号 -Reset -NewPassword (Read-Host -AsSecureString)
配套命令Set-ADUser -ChangePasswordAtLogon $true;Unlock-ADAccount 解锁

典型使用场景

  • 用户忘记密码,管理员代重置后要求其自行修改
  • 账户被锁定后重置密码并解锁,恢复正常使用
  • 安全事件后强制关键账号轮换口令
  • 批量重置测试环境账号密码
  • 用户离岗期间代为重置,避免账号长期使用旧口令

常用示例

常用示例
$pw = Read-Host -AsSecureString '新密码'
Set-ADAccountPassword -Identity ops01 -Reset -NewPassword $pw
Set-ADUser -Identity ops01 -ChangePasswordAtLogon $true   # 强制下次登录改密
Unlock-ADAccount -Identity ops01                           # 顺便解锁更省事
Get-ADUser -Identity ops01 -Properties PasswordLastSet, PasswordExpired, LockedOut | Select-Object SamAccountName, PasswordLastSet, LockedOut

参数与命令读法

项作用注意
-Reset用新密码直接替换管理员重置场景使用
-NewPassword新密码(安全字符串)用 Read-Host -AsSecureString 输入
-ChangePasswordAtLogon下次登录强制改密对服务账号会阻塞其启动
Unlock-ADAccount解除锁定状态重置后常需一并执行
PasswordLastSet上次设置密码时间复核重置是否生效
PasswordExpired密码是否已过期判断用户是否必须改密
服务账号改密必须同步更新所有引用位置(计划任务、配置文件、连接串),否则会造成批量失败;也不要对服务账号设置 ChangePasswordAtLogon。
当新密码不满足域密码策略的复杂度要求时,重置会直接报错,先确认域的密码策略再操作。重置完成后应通过工单或电话把新口令交付用户本人,不要用邮件明文发送,并记录操作时间与操作人以便审计追溯。

易错点

  • ChangePasswordAtLogon 对服务账号设置后会导致服务无法启动
  • 密码复杂度不满足域策略时重置报错,需先查域密码策略
  • 只重置密码不解锁,用户仍会因账户锁定而无法登录
  • 服务账号改密后未同步更新引用位置,引发批量认证失败

数据来源与参考

  • Microsoft Learn:Set-ADAccountPassword
  • Microsoft Learn:Set-ADUser

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌