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

PowerShell技巧:禁用指定OU用户时如何排除子OU

解决方法:禁用指定OU用户并排除子OU,及定时运行设置

一、直接可用的修改版脚本

你原来的脚本默认会递归搜索指定OU下的所有子树(SearchScope默认值是Subtree),所以连子OU里的用户也一起禁用了。只要添加-SearchScope OneLevel参数,就能只搜索指定OU的直接用户,子OU内的用户不会被选中:

Get-ADUser -Filter * -SearchBase "ou=MainOU, ou=User, ou=Test, dc=local, dc=us" -SearchScope OneLevel | Disable-ADAccount

参数说明

  • -SearchScope OneLevel:限定搜索范围为指定OU的直接子对象,不会递归遍历子OU。
  • -Filter *:匹配目标OU下的所有用户账户。
  • -SearchBase:指定要操作的目标OU的完整LDAP路径。

二、进阶:排除特定子OU的场景(扩展学习)

如果你的需求不是完全排除所有子OU,而是要排除某几个特定的子OU,可以通过过滤用户的DistinguishedName(DN属性)实现。比如要排除ou=ExcludeOU, ou=MainOU, ou=User, ou=Test, dc=local, dc=us这个子OU的用户,脚本如下:

$targetOU = "ou=MainOU, ou=User, ou=Test, dc=local, dc=us"
$excludeOU = "ou=ExcludeOU, ou=MainOU, ou=User, ou=Test, dc=local, dc=us"

Get-ADUser -Filter * -SearchBase $targetOU | Where-Object {
    # 检查用户的DN是否不包含排除OU的完整路径
    $_.DistinguishedName -notlike "*$excludeOU*"
} | Disable-ADAccount

这种方法适用于需要递归搜索目标OU,但要跳过特定子OU的场景,核心是用Where-Object过滤掉DN中包含排除OU标识的用户。

三、设置每周五晚自动运行

通过Windows任务计划程序实现定时执行:

  1. 打开「任务计划程序」→点击「创建任务」
  2. 常规选项卡:填写任务名称(如“每周五禁用指定OU用户”),勾选「不管用户是否登录都要运行」,并选择「使用最高权限运行」(避免AD操作权限不足)
  3. 触发器选项卡:点击「新建」,选择「每周」,设置为每周五,指定运行时间(如20:00),勾选「启用」
  4. 操作选项卡:点击「新建」,操作选择「启动程序」,程序/脚本填写powershell.exe,添加参数填写:
    -ExecutionPolicy Bypass -File "C:\Scripts\Disable-ADUsers.ps1"
    
    (先把修改后的脚本保存为Disable-ADUsers.ps1,替换成你实际的保存路径)
  5. 设置选项卡:按需勾选「允许任务按需运行」等选项,点击「确定」完成配置

关键知识点总结

  • 排除所有子OU的基础方法:用-SearchScope OneLevel限制搜索范围为当前OU的直接用户。
  • 灵活排除特定子OU:通过Where-Object过滤用户的DistinguishedName属性。
  • 定时运行依赖Windows任务计划程序,需确保脚本路径正确且PowerShell执行权限配置妥当。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:42:39