powershell管理ad权限委派应采用“组策略+安全组+自动化”结构化模式:以域本地组承接权限、全局组承载人员,用add-adpermission精确配置acl,通过参数化脚本实现批量操作与审计留痕,并定期校验防adminsdholder覆盖。
powershell 处理 active directory 复杂权限委派管理,关键不在命令多寡,而在结构清晰、可复用、可审计。直接对用户赋权或手动点选委派向导,短期省事,长期难维护。真正适合中大型环境的做法,是把权限逻辑拆解为“组策略+安全组+powershell自动化”,让每次委派都成为一次可版本化、可回溯的操作。
用域本地组承接权限,全局组承载人员
这是整个模型的基石。不要把权限直接给用户,也不要直接给全局组——它们不用于授权边界。正确做法是:
- 创建域本地组(如 OU_HR_Users_PasswordReset),专门用于在特定 OU 上执行某类任务
- 将 HR 运维人员加入对应的全局组(如 GRP_HR_Support),再把该全局组嵌套进上述域本地组
- 所有权限只授予域本地组,并限定在目标 OU 范围内
这样人员变动只需调整全局组成员,权限本身无需重配,也避免了因用户直加导致的权限漂移。
用 Add-ADPermission 精确控制 ACL 条目
ADUC 的“委派控制向导”只能覆盖常见场景,遇到定制需求(比如仅允许修改电话号码字段、禁止删除对象但允许重命名)必须用 PowerShell 直接操作 ACL。核心命令是 Add-ADPermission:
- 指定 -Identity 为目标 OU 或容器 DN
- 用 -User 指向域本地组(不是用户名)
- 通过 -AccessRights 和 -Properties 组合定义细粒度操作,例如:
-AccessRights ExtendedRight -ExtendedRights "Reset Password"
-AccessRights WriteProperty -Properties "telephoneNumber" - 加上 -InheritanceType All 确保子对象自动继承(除非明确要禁用)
批量委派 + 变更留痕,靠脚本固化流程
日常运维中,新部门上线、外包团队接入、审计整改等场景常需一次性配置多个 OU 的同类权限。这时应避免逐个运行向导,而是写可参数化的脚本:
- 用 CSV 文件定义:OU路径、目标组名、权限类型、是否启用继承
- 主逻辑调用 Add-ADPermission,每执行一条前记录日志到文件或 Event Log
- 脚本开头检查当前用户是否属于 Domain Admins 或具备 ManageGPOs 权限,防止越权执行
- 关键操作前加 -WhatIf 参数预览,确认无误后再去掉执行
定期验证委派是否被意外覆盖
受保护组(如 Account Operators、Domain Admins)成员身份会触发 adminSDHolder 模板同步,可能覆盖你精心配置的 ACL。这不是故障,而是 AD 内置保护机制。因此:
- 避免让普通委派账号同时属于任何受保护组
- 每月用 Get-ADACL(需自定义函数或第三方模块)扫描关键 OU 的顶级 ACL,比对是否与基线一致
- 发现差异时,先查 adminCount=1 属性是否被设为 1,再决定是修正账户属性还是重新应用委派











