命令是干什么的
管理员帮用户重置域密码用 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。
当新密码不满足域密码策略的复杂度要求时,重置会直接报错,先确认域的密码策略再操作。重置完成后应通过工单或电话把新口令交付用户本人,不要用邮件明文发送,并记录操作时间与操作人以便审计追溯。