尝试复制继承的权限时出错

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

我希望在保留现有权限的同时禁用一组子文件夹的ACL继承。

为此,我正在运行此代码段:

gci | % {
  $Acl = Get-Acl $_
  $Acl.SetAccessRuleProtection($true, $true)
  Set-Acl $_ $Acl
}

对于每个子文件夹,发生错误:

Set-Acl:无法设置ACL,因为它需要调用的方法SetSecurityDescriptor不存在。

我找到了this similar question,但不是完全相同的副本。 OP打算清除所有权限;我想保留它们。

还:OP指出“我摆脱了错误消息,但没有透露他是如何做到的]

如何使用PowerShell完成此操作?

powershell acl
2个回答
0
投票

这应该为您工作:

Get-ChildItem | ForEach-Object {
    $Acl = Get-Acl $_
    $Acl.SetAccessRuleProtection($true,$false) #Set folder inheritance to off
    Set-Acl $_ -AclObject $Acl    
}

0
投票

Set-Acl存在许多问题。我通常尝试依靠.NET进行ACL工作:

try {
    $FileSystemObject = (Get-Item '.\accessibilitycpl.dll')
    $Acl = $FileSystemObject.GetAccessControl()
    $Acl.SetAccessRuleProtection($true,$false)
    $FileSystemObject.SetAccessControl($Acl)
} catch {
    ## Catch exceptions!
}
© www.soinside.com 2019 - 2024. All rights reserved.