使用PowerShell给AD OU委派权限时仅GenericAll生效,创建删除权限不生效如何解决
问题原因
- 构造函数参数顺序错误:
ActiveDirectoryAccessRule对应的重载参数顺序为(身份标识, 权限集合, 访问类型, 受控对象类型GUID, 继承类型, 继承对象类型GUID),你给出的第二条ACE把继承类型Descendents和组对象类型标识$Groups的位置写反了,导致第二条ACE的作用范围被错误配置为覆盖当前OU本身,而非仅作用于后代对象。 - AD ACL自动合并规则:同一安全主体的允许权限如果存在包含关系,AD会自动合并冗余条目。
GenericAll本身已经完全包含CreateChild、DeleteChild在内的所有AD对象权限,两条ACE作用范围重叠时,细分的小权限会被全量权限合并,不会单独在ACL中展示。
修复方案
如果你的需求是「在当前OU上拥有创建/删除组类型子对象的权限,且对当前OU下所有后代组对象拥有完全控制权限」,按如下方式调整代码即可:
# 第一条ACE:作用于当前OU,允许创建、删除组类型子对象 $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $sid, "CreateChild, DeleteChild", "Allow", $Groups, "All", [Guid]::Empty # 第二条ACE:仅继承到所有后代组对象,授予GenericAll权限,不作用于当前OU本身 $ace2 = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $sid, "GenericAll", "Allow", [Guid]::Empty, "Descendents", $Groups
调整后两条ACE的作用范围完全隔离,不存在重叠,不会触发权限合并逻辑,两条规则都会正常出现在ACL列表中。
如果你的业务确实需要给当前OU本身也分配GenericAll权限,那么细分的CreateChild、DeleteChild权限被合并属于AD正常机制,不影响实际权限生效,不需要额外处理。
内容的提问来源于stack exchange,提问作者user17151900
相关产品推荐
相关产品推荐

