如何在域环境中使用命令行修改Windows Server 2016的密码?
美国、香港服务器
如何在域环境中使用命令行修改Windows Server 2016的密码?
10-21 来源:
## 景 A:自助修改当前登录域账号(知道旧密码)
### 方法 1:ksetup(CMD,推荐,Kerberos 协议改域密码)
ksetup /changepassword "旧密码" "新密码"
示例:
ksetup /changepassword "Old@Pass123" "New@Pass456"
如果是跨域,可以指定域名:
ksetup /domain YOURDOMAIN /changepassword "Old@Pass123" "New@Pass456"
特点:直接和域 KDC 通信,**不需要 AD 模块**,域成员服务器也可以执行。
### 方法 2:net user /domain(CMD)
net user 用户名 * /domain
回车后交互式输入两次新密码,密码不回显(安全,不写明文)
示例:
net user admin * /domain
注意:`/domain` 代表操作域账户,不加就是本机本地账户。
场景 B:域管理员重置其他域用户(无需旧密码,域控 / 安装 RSAT 工具)
### ✅ PowerShell(推荐,现代 AD 管理)
需要导入 ActiveDirectory 模块,**在域控或者装了 RSAT-AD-PowerShell 组件的服务器执行**
# 导入AD模块(域控一般自带)
Import-Module ActiveDirectory
# 1. 将明文密码转为安全字符串
$newPwd = ConvertTo-SecureString "New@Pass123" -AsPlainText -Force
# 2. 重置密码,-Reset代表不需要旧密码
Set-ADAccountPassword -Identity "testuser" -Reset -NewPassword $newPwd
# 3. 强制用户下次登录修改密码(常用)
Set-ADUser -Identity "testuser" -ChangePasswordAtLogon $true
`-Identity` 可以填:登录名 samAccountName、DN、GUID。
CMD dsmod 命令(老命令,适合脚本)
语法:
dsmod user "用户DN完整可分辨名称" -pwd "新密码" -mustchpwd yes
示例:
dsmod user "CN=张三,OU=IT,DC=contoso,DC=local" -pwd "New@Pass123" -mustchpwd yes
- `-mustchpwd yes`:用户下次登录强制改密码;no 则不强制
- 输入`-pwd *` 会交互式输入密码,避免明文在命令历史泄露
获取用户 DN:`dsquery user -name "张三"` 可以查询 DN
前置条件与常见报错
1. **AD PowerShell 模块安装(非域控服务器)**
Server2016 安装 RSAT AD 模块:
Install-WindowsFeature RSAT-AD-PowerShell
2. **密码必须满足域组策略**
复杂度、长度、不能使用历史密码,否则直接报错。
3. **权限说明**
- 重置别人密码:账号需要 `Domain Admins` / `Account Operators` 委派权限
- 自助修改自己密码:普通域用户默认有权限
4. **多域控复制延迟**
修改后 AD 复制需要时间,可手动强制执行 AD 复制:`repadmin /syncall`
5. 坑:**net user 不加 /domain 修改的是本机本地账户,不是域账户!
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快