You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell实现AD用户锁定状态检测与自动解锁?

PowerShell AD账户锁定检查与解锁脚本完善

以下是满足需求的完整脚本,实现锁定状态检测、交互式确认解锁及解锁后状态验证:

# 获取目标用户名
$user = Read-Host -Prompt 'Enter Username'

# 查询AD用户及其锁定状态(直接存储用户对象,便于后续操作)
try {
    $adUser = Get-ADUser -Identity $user -Properties LockedOut -ErrorAction Stop
}
catch {
    Write-Error "未找到用户:$user"
    exit 1
}

# 判断账户是否锁定
if ($adUser.LockedOut) {
    Write-Output "账户锁定状态:$($adUser.LockedOut)"
    
    # 询问是否执行解锁操作
    $confirm = Read-Host -Prompt "用户 $($adUser.Name) 账户已锁定,是否解锁?(Y/N)"
    
    # 确认后执行解锁
    if ($confirm -match '^[Yy]$') {
        Unlock-ADAccount -Identity $adUser
        Write-Output "已尝试解锁用户 $($adUser.Name)"
        
        # 再次查询并输出解锁后的状态
        $updatedStatus = Get-ADUser -Identity $user -Properties LockedOut | Select-Object Name, LockedOut
        Write-Output "解锁后状态:"
        $updatedStatus
    }
    else {
        Write-Output "已取消解锁操作"
    }
}
else {
    Write-Output "用户 $($adUser.Name) 账户未锁定,无需操作"
}

关键改进点说明:

  • 直接存储AD用户对象:相比单独提取LockedOut值,存储完整的用户对象更便于后续解锁操作,无需重复输入用户名。
  • 错误处理:添加try/catch块,处理用户名不存在的场景,避免脚本直接报错崩溃。
  • 交互式确认:通过Read-Host获取用户确认,仅在输入Y/y时执行解锁操作。
  • 解锁后验证:解锁完成后再次查询账户状态,直观展示操作结果。

内容的提问来源于stack exchange,提问作者Stephane Vaillancourt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:30:50