Sie sind hier: Startseite
 Liste aller Codebeispiele

Entfernen mehrerer Rechteeinträge aus einer Zugriffsrechteliste

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Das folgende Script löscht aus einer Zugriffsrechteliste alle Rechteeinträge, in denen das Lese- und Ausführungsrecht ("ReadAndExecute") vergeben wurde.

Programmcodebeispiele Windows PowerShell-Skript

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

Andere Programmiersprache

Dieses Codebeispiel ist in anderen Sprachen (noch) nicht verfügbar.

Hinweise

Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B. Console.WriteLine() einsetzen.

Querverweise

 Definition '.NET Framework Class Library'  .NET & Visual Studio Community Portal