
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
}
}