ACL schreiben: Aus einer Zugriffsrechteliste alle Rechteeinträge löschen, in denen das Lese- und Ausführungsrecht ("ReadAndExecute") steht
Eingabedaten
$DIR = "g:\daten\kunden"
$BENUTZER = "itv\HS"
$Count = 0
Kontrollausgabe
$acl = Get-Acl $DIR
"ACL vorher:"
$acl | format-list
ACL holen
$acl = Get-Acl g:\daten\kunden
Zugriff auf ACEs
$aces =$acl.GetAccessRules($true, $true, [System.Security.Principal.NTAccount])
Schleife über alle ACEs
foreach ($ace in $aces)
{
write-host $ace.IdentityReference.ToString() "hat Zugang" $ACE.FileSystemRights $ACE.AccessControlType "Vererbt?" $ACE.IsInherited
Selektives Löschen
if ($ace.FileSystemRights.ToString() -match "ReadAndExecute")
{
"...wird entfernt!"
$Ergebnis = $acl.RemoveAccessRule($ace)
if ($Ergebnis) { echo "Wurde entfernt!"; $Count++ }
}
}
ACL speichern
set-acl -AclObject $ACL -Path $DIR
echo ($Count.ToString() + " ACEs wurden entfernt!")
Kontrollausgabe
$acl = Get-Acl $DIR
"ACL nachher:"
$acl | format-list