在 AD 组织单元上使用 powershell 删除访问规则不起作用

问题描述 投票:0回答:1

我对某个 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不起作用)

powershell acl organizational-unit
1个回答
0
投票

我刚刚遇到了同样的问题。

您必须使用

RemoveAccessRuleSpecific()
而不是
RemoveAccessRule()

背后的原因是,使用您使用的方法,算法无法确定应该删除的确切ACE。使用

RemoveAccessRuleSpecific()
时,它会扫描 ACL 中的确切 ACE,并准确删除该 ACE。我找到了详细的解释这里

© www.soinside.com 2019 - 2024. All rights reserved.