Powershell 尝试复制继承的权限时出错
我希望在保留现有权限的同时,在一组子文件夹上禁用ACL继承 为此,我将运行以下代码段:Powershell 尝试复制继承的权限时出错,powershell,acl,Powershell,Acl,我希望在保留现有权限的同时,在一组子文件夹上禁用ACL继承 为此,我将运行以下代码段: gci | % { $Acl = Get-Acl $_ $Acl.SetAccessRuleProtection($true, $true) Set-Acl $_ $Acl } 对于每个子文件夹,都会发生错误: Set-Acl:无法设置Acl,因为它需要调用的方法SetSecurityDescriptor不存在 我找到了,但不是完全一样。OP打算清除所有权限;我想保留它们 此外:OP声明“我已经
gci | % {
$Acl = Get-Acl $_
$Acl.SetAccessRuleProtection($true, $true)
Set-Acl $_ $Acl
}
对于每个子文件夹,都会发生错误:
Set-Acl:无法设置Acl,因为它需要调用的方法SetSecurityDescriptor不存在
我找到了,但不是完全一样。OP打算清除所有权限;我想保留它们
此外:OP声明“我已经消除了错误消息”,但没有透露他是如何做到这一点的
如何使用PowerShell完成此任务?这应该适合您:
Get-ChildItem | ForEach-Object {
$Acl = Get-Acl $_
$Acl.SetAccessRuleProtection($true,$false) #Set folder inheritance to off
Set-Acl $_ -AclObject $Acl
}
Set Acl
存在许多问题。我通常尝试依赖.NET进行ACL工作:
try {
$FileSystemObject = (Get-Item '.\accessibilitycpl.dll')
$Acl = $FileSystemObject.GetAccessControl()
$Acl.SetAccessRuleProtection($true,$false)
$FileSystemObject.SetAccessControl($Acl)
} catch {
## Catch exceptions!
}
我发现您正确地命名了
-AclObject
参数。抢手货但是,同样的错误也会发生。请注意,我希望复制继承的权限,因此方法调用将改为$Acl.SetAccessRuleProtection($true,$true)
。谢谢。仅供参考,我将第二个参数更改为$true
,以复制现有权限。是的,我想我复制了Shamus的代码,而不是您的代码,作为要修改的骨架--对此表示抱歉。