Entfernen mehrerer Rechteeinträge aus einer Zugriffsrechteliste
Autor: Dr. Holger Schwichtenberg
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 ACEsforeach ($ace in $aces) { write-host $ace.IdentityReference.ToString() "hat Zugang" $ACE.FileSystemRights $ACE.AccessControlType "Vererbt?" $ACE.IsInherited Selektives Löschenif ($ace.FileSystemRights.ToString() -match "ReadAndExecute") { "...wird entfernt!" $Ergebnis = $acl.RemoveAccessRule($ace) if ($Ergebnis) { echo "Wurde entfernt!"; $Count++ } } } ACL speichernset-acl -AclObject $ACL -Path $DIR echo ($Count.ToString() + " ACEs wurden entfernt!") Kontrollausgabe$acl = Get-Acl $DIR "ACL nachher:" $acl | format-list
$DIR = "g:\daten\kunden" $BENUTZER = "itv\HS" $Count = 0
$acl = Get-Acl $DIR "ACL vorher:" $acl | format-list
$acl = Get-Acl g:\daten\kunden
$aces =$acl.GetAccessRules($true, $true, [System.Security.Principal.NTAccount])
foreach ($ace in $aces) { write-host $ace.IdentityReference.ToString() "hat Zugang" $ACE.FileSystemRights $ACE.AccessControlType "Vererbt?" $ACE.IsInherited
if ($ace.FileSystemRights.ToString() -match "ReadAndExecute") { "...wird entfernt!" $Ergebnis = $acl.RemoveAccessRule($ace) if ($Ergebnis) { echo "Wurde entfernt!"; $Count++ } } }
set-acl -AclObject $ACL -Path $DIR echo ($Count.ToString() + " ACEs wurden entfernt!")
$acl = Get-Acl $DIR "ACL nachher:" $acl | format-list
Liste aller Codebeispiele Definition '.NET Framework Class Library' PowerShell Community Portal