
Ich muss einer Gruppe den Zugriff auf den Ordner/die Dateien C:\Windows\Installer verweigern.
Ich versuche Folgendes zu verwenden, aber es gilt nur für Ordner, aber nicht für alle Dateien, es gilt für einige Dateien
$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
Übersehe ich etwas in meinem Skript?
EDIT: Nachdem ich die Berechtigung für die Dateien überprüft habe, die ich löschen kann, sieht es so aus, als ob Inherit deaktiviert ist
Wie kann ich überprüfen, ob „Inheren“ deaktiviert ist oder nicht und wenn ja, dann aktivieren?
Ich muss dies auf 5000 Maschinen anwenden, deshalb mache ich es über ein Skript
Antwort1
Sie wenden die ACL-Änderung nur auf den Ordner an, den Sie mit angegeben haben. $path
Um die ACL auf alles im Ordner anzuwenden, müssen Sie jedes Element rekursiv auflisten:
$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
}
}