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

批量禁用AD用户的PowerShell脚本未执行问题求助

PowerShell AD用户禁用脚本问题排查与修复

脚本存在的核心问题

  • OU路径不完整:$TargetOU = "OU=DisabledUsers"仅指定了OU名称,AD操作需要完整LDAP路径(如OU=DisabledUsers,DC=domain,DC=com),否则无法定位目标OU。
  • 组移除语法错误:Get-AdPrincipalGroupMembership后缺少管道符|,导致Where-Object逻辑无法执行;且Remove-AdGroupMember未处理交互确认,会中断脚本执行。
  • 描述修改命令错误:Get-ADUser是查询命令,无法修改属性,需改用Set-ADUser。
  • 移动对象参数未定义:$UserDN未赋值,脚本无法识别要移动的对象。
  • CSV路径错误:C:temp\DisableTest.csv缺少反斜杠,应为C:\temp\DisableTest.csv。
  • 组移除逻辑缺失:原写法未正确遍历并移除目标组,仅写了语法错误的代码块。

修正后的完整脚本

Import-Module ActiveDirectory
# 替换为你的完整OU LDAP路径,示例:OU=DisabledUsers,DC=contoso,DC=com
$TargetOU = "OU=DisabledUsers,DC=yourdomain,DC=com"
# 修正CSV路径的反斜杠
Import-Csv "C:\temp\DisableTest.csv" | ForEach-Object {
    $samAccountName = $_.samAccountName 
    # 一次性获取用户对象,减少AD查询次数
    $user = Get-ADUser -Identity $samAccountName -Properties DistinguishedName, MemberOf

    # 移除除Domain Users外的所有组
    $user.MemberOf | Get-ADGroup | Where-Object Name -Ne 'Domain Users' | ForEach-Object {
        Remove-AdGroupMember -Identity $_ -Members $samAccountName -Confirm:$false
    }

    # 禁用用户账户
    Disable-ADAccount -Identity $user

    # 修改用户描述
    Set-ADUser -Identity $user -Description "Disabled Per Request XXXX"

    # 移动用户到禁用OU
    Move-ADObject -Identity $user.DistinguishedName -TargetPath $TargetOU
}

关键修正说明

  • 完整OU路径:需从AD用户和计算机中查看目标OU的distinguishedName属性,复制完整LDAP路径填入$TargetOU。
  • 复用用户对象:先获取一次$user对象,后续操作直接调用,提升脚本执行效率。
  • 组移除优化:通过用户的MemberOf属性获取所属组,过滤Domain Users后批量移除,添加-Confirm:$false避免交互中断。
  • 属性修改正确命令:使用Set-ADUser修改用户描述,替代原错误的Get-ADUser写法。
  • 移动对象参数赋值:直接使用$user.DistinguishedName作为Move-ADObject的标识参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:21:07