介绍
在企业 IT 管理中,定期更新 Active Directory (AD) 用户密码是提升安全性的关键措施之一。本文提供了一个 PowerShell 脚本,
用于批量重置 AD 域中的所有用户密码,并强制其在下次登录时修改密码。
该脚本适用于 IT 管理员,可用于安全策略调整或密码泄露后的应急处理。
注意事项
- 请确保此脚本在具有足够权限的计算机上运行。
- 在运行脚本之前,请务必备份相关数据,并仔细检查脚本配置。
- 确保你有足够的权限来修改 AD 用户密码。
PowerShell 脚本
# 此脚本用于重置 Active Directory (AD) 域中所有用户的密码,并要求其在下次登录时强制修改密码。
# -------------- 配置信息 --------------
$adminUsername = "Administrator" # 修改为你的管理员用户名
$adminPassword = "YourAdminPassword" # 修改为你的管理员密码(明文存储密码可能存在安全风险)
$domainController = "DomainControllerName" # 修改为你的域控制器名称
$searchBase = "OU=Users,DC=example,DC=com" # 组织单位 (OU) 路径,确保修改范围正确
$newPassword = "NewPassword123!" # 需要设置的新密码
# -------------- 连接到 Active Directory --------------
try {
# 创建安全凭据对象
$securePassword = ConvertTo-SecureString $adminPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($adminUsername, $securePassword)
# 创建远程 PowerShell 会话
$session = New-PSSession -Credential $credential -ComputerName $domainController
Write-Host "成功连接到域控制器: $domainController" -ForegroundColor Green
} catch {
Write-Host "错误: 无法连接到域控制器,请检查凭据或网络连接。" -ForegroundColor Red
exit
}
# -------------- 获取 AD 用户列表 --------------
try {
$users = Get-ADUser -Filter * -SearchBase $searchBase -Server $domainController -SearchScope Subtree -Session $session
Write-Host "获取到 $($users.Count) 个用户。" -ForegroundColor Cyan
} catch {
Write-Host "错误: 无法获取用户列表,请检查 OU 路径或域控制器连接。" -ForegroundColor Red
Remove-PSSession $session
exit
}
# -------------- 重置用户密码并强制修改 --------------
foreach ($user in $users) {
try {
$secureNewPassword = ConvertTo-SecureString $newPassword -AsPlainText -Force
# 重置密码
Set-ADAccountPassword -Identity $user -NewPassword $secureNewPassword -Reset -Server $domainController -Credential $credential
# 设置密码下次登录时必须更改
Set-ADUser -Identity $user -ChangePasswordAtLogon $true -Server $domainController -Credential $credential
Write-Host "用户 $($user.SamAccountName) 的密码已成功重置。" -ForegroundColor Yellow
} catch {
Write-Host "错误: 无法重置用户 $($user.SamAccountName) 的密码。" -ForegroundColor Red
}
}
# -------------- 断开会话 --------------
Remove-PSSession $session
Write-Host "操作完成,已断开与域控制器的会话。" -ForegroundColor Green
结论
这个脚本适用于 Windows Server 运行环境,适用于企业 IT 管理中的日常维护。运行前请仔细检查参数,确保其适用于你的环境。
如果涉及大规模 AD 账户管理,建议结合日志记录机制,以确保操作可追踪。