批量重置 Active Directory 用户密码并强制修改

介绍

在企业 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 账户管理,建议结合日志记录机制,以确保操作可追踪。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注