Powershell文件夹继承问题

时间:2010-09-09 10:26:57

标签: powershell ntfs

我遇到PowerShell脚本问题我基本上试图通过删除以下组来重置文件夹的权限

  • NT AUTHORITY \ Authenticated Users
  • BUILTIN \用户

如果我手动将文件夹更改为不从父级继承脚本,我会通过谷歌查找通过脚本编译但不执行任何操作的脚本来删除继承的最佳方法。

这是我正在使用的命令

$WebsiteACL =Get-Acl -Path "C:\websites"
$WebsiteACL.SetAccessRuleProtection($true,$false)

有人有任何消化吗?

2 个答案:

答案 0 :(得分:1)

就我个人而言,我发现Get-Acl和Set-Acl仍然使用过多的PITA(而且我是C#dev)。您可以使用icacls.exe轻松完成任务:

icacls C:\temp\foo /inheritance:d

它还支持删除组。查看其用法:icacls /?

答案 1 :(得分:1)

除非您是尝试更改权限的对象的所有者,否则

Get-Acl/Set-Acl可能会成为皇家的痛苦 - 即使您是管理员也是如此。如果要更改您不拥有的对象的ACL,则必须为您的身份/帐户启用 SeBackupPrivilege 。我知道修改系统权限的唯一简便方法是安装 PowerShell社区扩展并使用Get/Set-Privilege。我真的不明白为什么会出现这种限制,但确实如此。

话虽如此,在大多数情况下使用icacls效果很好。如果您在通过启用基于访问的枚举的共享访问的目录上设置权限,则存在错误。每个人都做对了吗? ;)

使用icacls触摸ABE控制共享下的目录会导致目录消失,即使您仍具有该目录的权限。如果使用Windows资源管理器ACL编辑器读取并(重新)应用使用icacls设置的权限,则该目录将再次可见。

经过多次努力之后,确定icacls正在对同步位执行某些操作。如果没有同步,ABE会导致目录不可见。最简单的解决方法是不使用ABE,但在我们的环境中,禁用ABE不是一种选择。

另一种解决方案是使用SetACL.exe,您可以从SourceForge下载。它有一个非常复杂的语法,imho,但真的很强大。它也可以作为OCX使用,因此您可以通过PowerShell编写脚本。