在windows中使用powershell批量启用或禁用ad账户需先安装rsat-ad-powershell模块并导入activedirectory,再通过get-aduser筛选目标用户,配合enable-adaccount或disable-adaccount执行操作,推荐结合-whatif、-confirm及日志记录确保安全可追溯。
在 windows 中使用 powershell 批量启用或禁用 active directory(ad)账户,核心是调用 enable-adaccount 和 disable-adaccount cmdlet,并配合 get-aduser 读取目标用户。前提是已安装并导入 activedirectory 模块,且当前用户具备相应 ad 权限。
准备环境:确保 PowerShell 可管理 AD
需在域控制器或已安装远程服务器管理工具(RSAT)的 Windows 机器上操作。Windows 10/11 1809+ 或 Windows Server 默认不自带 AD 模块,需手动启用:
- 以管理员身份运行 PowerShell,执行:
Install-WindowsFeature -Name RSAT-AD-PowerShell(Windows Server) - 或在 Windows 10/11 上启用功能:
“设置 → 应用 → 可选功能 → 添加功能 → 选择‘RSAT: Active Directory Domain Services and Lightweight Directory Services Tools’” - 启动 PowerShell 后,先导入模块:
Import-Module ActiveDirectory
批量禁用账户:按条件筛选后统一操作
禁用账户常用场景包括离职处理、临时停用或安全响应。推荐基于属性(如部门、OU、登录名列表)精准筛选,避免误操作:
- 按组织单位(OU)禁用所有用户:
Get-ADUser -Filter * -SearchBase "OU=Sales,DC=contoso,DC=com" | Disable-ADAccount - 按姓名模式禁用(例如所有 test 开头的账户):
Get-ADUser -Filter "Name -like 'test*'" | Disable-ADAccount - 从 CSV 文件读取用户名批量禁用(CSV 内容为一列
SamAccountName):Import-Csv .\users_to_disable.csv | ForEach-Object { Disable-ADAccount -Identity $_.SamAccountName }
批量启用账户:恢复访问或新员工入职
启用操作逻辑相同,仅替换 cmdlet。注意:启用前建议确认账户是否被锁定或密码过期,否则用户仍无法登录:
- 启用指定 OU 下所有已禁用账户:
Get-ADUser -Filter {Enabled -eq $false} -SearchBase "OU=Marketing,DC=contoso,DC=com" | Enable-ADAccount - 启用多个指定账户(支持 SAM 账户名、DN 或 UPN):
Enable-ADAccount -Identity "jdoe", "asmith", "hr\jlee" - 启用前检查状态再执行(更安全):
Get-ADUser "jdoe" | Where-Object {$_.Enabled -eq $false} | Enable-ADAccount
增强安全性与可追溯性:加日志和确认机制
生产环境中不建议直接执行无确认的批量操作。加入日志记录和 -WhatIf 参数预览效果:
- 先模拟运行,查看哪些账户会被影响:
Get-ADUser -Filter "Department -eq 'Finance'" | Disable-ADAccount -WhatIf - 记录操作日志(含时间、操作人、影响账户):
$log = "$(Get-Date): Disabled $(($users = Get-ADUser -Filter "Title -eq 'Contractor'").Count) accounts"; $log | Out-File C:\ad_audit.log -Append; $users | Disable-ADAccount - 添加 -Confirm 参数强制交互确认:
Get-ADUser -Filter "Enabled -eq $true" -SearchBase "OU=Temp,DC=contoso,DC=com" | Disable-ADAccount -Confirm











