PowerShell ACL

Berechtigungen überprüfen

Um die Berechtigungen eines Ordners anzuzeigen, verwenden Sie den folgenden Befehl:

Get-Acl 'D:\Dienste\Scanbox' | Format-List

Datei- und Ordnerberechtigungen kopieren

Um Berechtigungen von einem Ordner auf einen anderen zu kopieren, müssen Sie Besitzer sowohl des Quellordners als auch des Zielordners sein. Verwenden Sie den folgenden Befehl, um die Berechtigungen vom Ordner “Accounting” in den Ordner “Sales” zu kopieren:

Get-Acl '\\fileserver\Daten' | Set-Acl '\\fileserver\Daten\Daten2'

Datei- und Ordnerberechtigungen festlegen

Verwenden Sie das PowerShell-Cmdlet “Set-Acl”, um die Berechtigungen für ein bestimmtes Element (wie eine Datei, einen Ordner oder einen Registrierungsschlüssel) zu ändern. Der folgende Code setzt die Berechtigung “Vollzugriff” (FullControl) für den Benutzer “ENTERPRISE\H.Wurst” auf “Zulassen” (Allow) für den Ordner “Sales”:

$acl = Get-Acl '\\fileserver\Daten'
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\H.Wurst", "FullControl", "Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl '\\fileserver\Daten'

Benutzerberechtigungen löschen

Um eine Berechtigung zu löschen, verwenden Sie den Parameter “RemoveAccessRule”. Der folgende Code entfernt die Berechtigung “Vollzugriff zulassen” (Allow FullControl) für den Benutzer H.Wurst vom Ordner “Sales”:

$acl = Get-Acl '\\fileserver\Daten'
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\H.Wurst", "FullControl", "Allow")
$acl.RemoveAccessRule($AccessRule)
$acl | Set-Acl '\\fileserver\Daten'

Vererbung von Berechtigungen aktivieren oder deaktivieren

Um die Vererbung von Berechtigungen zu verwalten, verwenden Sie die Methode “SetAccessRuleProtection”. Der erste Parameter sperrt die Vererbung vom übergeordneten Ordner ($true sperrt, $false erlaubt), und der zweite Parameter bestimmt, ob die vererbten Berechtigungen beibehalten oder gelöscht werden sollen ($true behalten, $false löschen). Der folgende Code deaktiviert die Vererbung und löscht alle vererbten Berechtigungen für den Ordner “Sales”:

$acl = Get-Acl '\\fileserver\Daten'
$acl.SetAccessRuleProtection($true, $false)
$acl | Set-Acl '\\fileserver\Daten'