Powershell文件夹继承问题

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

我在使用 powershell 脚本时遇到问题,我基本上尝试通过删除以下组来重置文件夹的权限

  • NT 权威\经过身份验证的用户
  • 内置\用户

如果我手动更改文件夹以不从其父级继承,则脚本可以正常工作,我通过谷歌查找通过脚本编译的脚本删除继承的最佳方法,但不执行任何操作。

这是我正在使用的命令

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

有人有什么建议吗?

powershell ntfs
3个回答
1
投票

就我个人而言,我发现 Get-Acl 和 Set-Acl 仍然太像 PITA,无法使用(而且我是一名 C# 开发人员)。 您可以使用 icacls.exe 轻松完成您的任务:

icacls C:\temp\foo /inheritance:d

还支持删除群组。 看看它的用法:

icacls /?
.


1
投票

Get-Acl/Set-Acl
可能会非常痛苦,除非您是要更改其权限的对象的所有者 - 即使您是管理员。如果您想更改不属于您的对象的 ACL,则必须为您的身份/帐户启用 SeBackupPrivilege。据我所知,修改系统权限的唯一简单方法是安装 PowerShell Community Extensions 并使用
Get/Set-Privilege
。我真的不明白为什么这个限制存在,但它确实存在。

话虽如此,使用

icacls
在大多数情况下效果都很好。如果您在启用了基于访问的枚举的情况下对通过共享访问的目录设置权限,则会出现错误。大家都这样做对吗? ;)

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

经过一番绞尽脑汁后,确定 icacls 正在对 synchronize 位执行某些操作。如果没有 synchronize ABE 会导致目录不可见。最简单的解决方法是不使用 ABE,但在我们的环境中禁用 ABE 不是一个选项。

另一个解决方案是使用

SetACL.exe
,您可以从 SourceForge 下载。恕我直言,它的语法非常复杂,但非常强大。它还可以作为 OCX 提供,因此您可以通过 PowerShell 编写脚本。


0
投票
$WebsiteACL =Get-Acl -Path "C:\websites"
$WebsiteACL.SetAccessRuleProtection($true,$false)
Set-Acl -Path "C:\websites" -AclObject $WebsiteACL
© www.soinside.com 2019 - 2024. All rights reserved.