我对某个 OU 拥有委派权限,我想删除该权限。
$SB = "OU=Name of OU,DC=Name,DC=of,DC=Domain"
$ADUC=Get-ADOrganizationalUnit $SB
$OUACL=Get-ACL AD:\$ADN
我可以使用以下脚本获取我想要删除的 ACL 条目:
foreach ($access in $OUACL.access){
foreach ($Value in $access.ObjectType){
if ($Value -like "bf967a0a-0de6-11d0-a285-00aa003049e2"){
foreach ($Inherit in $Access.IsInherited){
if ($Inherit -like "False"){
$Removeme = $Access
#$OUACL.RemoveAccessRule($access) | Out-null
}
}
}
}
}
变量已正确填充我要删除的条目:
ActiveDirectoryRights : ExtendedRight
InheritanceType : Descendents
ObjectType : bf967a0a-0de6-11d0-a285-00aa003049e2
InheritedObjectType : 00000000-0000-0000-0000-000000000000
ObjectFlags : ObjectAceTypePresent
AccessControlType : Allow
IdentityReference : DOMAIN\GroupName
IsInherited : False
InheritanceFlags : ContainerInherit
PropagationFlags : InheritOnly
但是如果我使用 $OUACL.RemoveAccessRule($access) 我会得到返回代码“False”并且条目仍在 ACL 内。
我错过了什么?
我尝试从 ACS 中删除访问规则,然后保存它。 (set-acl部分丢失,因为removefromAccessRule不起作用)
我刚刚遇到了同样的问题。
您必须使用
RemoveAccessRuleSpecific()
而不是 RemoveAccessRule()
背后的原因是,使用您使用的方法,算法无法确定应该删除的确切ACE。使用
RemoveAccessRuleSpecific()
时,它会扫描 ACL 中的确切 ACE,并准确删除该 ACE。我找到了详细的解释这里。