如何在Powershell脚本中授予目录权限

如何在Powershell脚本中授予目录权限,powershell,Powershell,我在IIS管理器中单击我的站点上的鼠标右键,选择“编辑权限”,然后单击“安全”选项卡。在那里,我拥有具有以下权限的用户IUSR:读取和执行、列出文件夹内容、读取。我还可以在Powershell中使用命令Get Acl | fl验证这一点,该命令显示: 访问:NT授权\IUSR允许读取和执行,同步 现在我完全删除了IUSR的ACL条目。我想使用Powershell脚本设置它,使用以下行: $path= $acl=获取acl“$path” $AccessRule=New Object System

我在IIS管理器中单击我的站点上的鼠标右键,选择“编辑权限”,然后单击“安全”选项卡。在那里,我拥有具有以下权限的用户IUSR:读取和执行、列出文件夹内容、读取。我还可以在Powershell中使用命令
Get Acl | fl
验证这一点,该命令显示:

访问:NT授权\IUSR允许读取和执行,同步

现在我完全删除了IUSR的ACL条目。我想使用Powershell脚本设置它,使用以下行:


$path=
$acl=获取acl“$path”
$AccessRule=New Object System.Security.AccessControl.FileSystemAccessRule(“NT授权\IUSR”、“读取和执行”、“允许”)
$acl.SetAccessRule($AccessRule)
$acl |设置acl“$path”

再次使用
Get Acl | fl
验证,我显示了与预期完全相同的信息。但在IIS管理器中,未设置以前检查的权限。而是选中“特殊权限”。当我单击“高级”并从列表中选择IUSR时,它显示已授予的相同权限:读取和执行、列出文件夹内容、读取


但是我的网站不工作(浏览器抛出错误:HTTP Errror 401.3-未经授权)。只有在“权限”窗口中手动授予这些权限时,它才起作用。如何在Powershell脚本中正确设置所需的权限?

将我的评论转换为答案,听起来您还需要为accessrule指定权限,以便文件夹的子对象继承权限

$AccessRule = [System.Security.AccessControl.FileSystemAccessRule]::new("NT AUTHORITY\IUSR", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow")

我现在没有可以测试的东西。但是,我会仔细查看Get ACL返回的权限,这样您就可以确定设置是否正确。看一看上面的MS文档。如果我今天找到要测试的内容,我会看看是否可以解决。我猜您还需要为accessrule指定权限,以便文件夹的子对象继承权限。尝试
$AccessRule=[System.Security.AccessControl.FileSystemAccessRule]::新建(“NT AUTHORITY\IUSR”、“ReadAndExecute”、“ContainerInherit、ObjectInherit”、“None”、“Allow”)
@Theo同意。与我所说的类似,我认为他可以更好地了解现有的权利,然后使用访问规则,直到找到真正的匹配。你的例子已经考虑到这一点了吗?@Steven@Theo你的回答给了我一个有价值的提示,现在我能够识别出我的初始手动设置和脚本方法之间的差异。脚本中的设置应用于“仅此文件夹”,而它们必须应用于“此文件夹、子文件夹和文件”。现在我只需要找出如何使用PowerShell设置它。@steven你的答案正是我需要的。我只需要在代码中的“ReadAndExecute”之后插入“ContainerInherit,ObjectInherit”,“None”,就解决了问题。回答一下,我会记下来的。谢谢
$AccessRule = [System.Security.AccessControl.FileSystemAccessRule]::new("NT AUTHORITY\IUSR", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow")