拒绝访问文件夹和文件

拒绝访问文件夹和文件

我需要拒绝某个组访问 C:\Windows\Installer 文件夹/文件

我尝试使用以下内容,但它仅适用于文件夹,而不是所有文件,它适用于某些文件

$path = "C:\Windows\Installer"
 $acl = Get-Acl $path
 $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("YourUsers","FullControl", "ContainerInherit,ObjectInherit", "None", "Deny")
 $acl.AddAccessRule($AccessRule)
 Set-Acl -AclObject $acl -Path $path

我的脚本中是否遗漏了任何内容

编辑:检查我可以删除的文件的权限后,看起来继承已被禁用

我如何检查继承是否被禁用,如果禁用则启用它

我需要将其应用到 5000 台机器,这就是我通过脚本执行此操作的原因

答案1

您仅将 ACL 更改应用于您用 指定的文件夹$path,要将 ACL 应用于文件夹中的所有内容,您需要递归列出每个项目:

$path = "C:\Windows\Installer"
$items = Get-ChildItem -Recurse $path

# Enables inheritance on all items in folder
foreach ($item in $items)
{
  $acl = Get-acl $item.FullName
  $acl.SetAccessRuleProtection($false,$true)
  Set-Acl -AclObject -Path $item.FullName
}

# Sets file / folder permission to desired state
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("YourUsers","FullControl", "ContainerInherit,ObjectInherit", "None", "Deny")
foreach ($item in $items)
{
  $acl = Get-acl $item.FullName
  # Compare item's folder permission against root folder, if different apply ACL
  if ((Compare-Object -ReferenceObject (Get-ACL $path) -DifferentObject (Get-ACL $item) -Property access) -ne $null)
  {
    $acl.AddAccessRule($AccessRule)
    Set-Acl -AclObject $item.FullName
  }
}
  

相关内容