Berechtigungen für Ordner mit PowerShell rekursiv festlegen
- Erhalten Sie Berechtigungen für Ordner rekursiv mit PowerShell
- Berechtigungen für Ordner rekursiv mit PowerShell festlegen
Eine ACL (Access Control List) repräsentiert die Berechtigungen und Benutzergruppen von Benutzern für den Zugriff auf eine Datei oder Ressource. Es ist eine geordnete Liste von Zugriffssteuerungseinträgen (ACEs).
Jeder ACE in einer ACL definiert die erlaubten, verweigerten oder überwachten Zugriffsrechte. Die Sicherheitsbeschreibung für ein Objekt kann zwei Arten von ACLs haben: DACL und SACL.
Wenn Sie unter Windows mit NTFS-Berechtigungen arbeiten, müssen Sie möglicherweise die Berechtigungen für Ordner rekursiv ändern. Eine GUI wäre zeitaufwändiger und komplexer als ein PowerShell-Skript.
In diesem Tutorial erfahren Sie, wie Sie mit PowerShell rekursiv Berechtigungen für Ordner festlegen.
Erhalten Sie Berechtigungen für Ordner rekursiv mit PowerShell
Für die Verwaltung von ACL-Berechtigungen in PowerShell gibt es hauptsächlich zwei Cmdlets: Get-Acl
und Set-Acl
.
Das Cmdlet Get-Acl
ruft die Sicherheitsbeschreibung ab, die die Zugriffskontrolllisten (ACLs) einer Datei oder Ressource enthält.
Das Get-Acl
holt die Sicherheitsbeschreibung des C:\New
-Verzeichnisses.
Get-Acl C:\New
Ausgang:
Directory: C:\
Path Owner Access
---- ----- ------
New DelftStack\rhntm BUILTIN\Administrators Allow FullControl...
Das Cmdlet Get-Acl
gibt nicht alle Berechtigungen für Verzeichnisse und Unterverzeichnisse zurück. Sie müssen das Cmdlet Get-ChildItem
mit dem Parameter -Recurse
verwenden, um Berechtigungen für Ordner rekursiv zu erhalten.
Get-ChildItem "C:\pc" -Recurse | Get-ACL
Berechtigungen für Ordner rekursiv mit PowerShell festlegen
Das Set-Acl
ändert die Sicherheitsbeschreibung einer Datei oder Ressource. Es wendet die als Wert des Parameters -AclObject
bereitgestellte Sicherheitsbeschreibung an.
Die folgenden Befehle kopieren die Werte aus der Sicherheitsbeschreibung des Verzeichnisses C:\Neu
in die Sicherheitsbeschreibung des Verzeichnisses C:\pc
.
$new = Get-Acl -Path "C:\New"
Set-Acl -Path "C:\pc" -AclObject $new
Der erste Befehl ruft die Sicherheitsbeschreibung des Verzeichnisses C:\New
ab und speichert sie in der Variablen $new
. Im zweiten Befehl ändert Set-Acl
die Werte in der ACL des Verzeichnisses C:\New
auf die Werte in $new
.
Das folgende Skript fügt die neue ACL-Regel rekursiv zu den vorhandenen Berechtigungen für den Ordner hinzu.
$acl = Get-Acl -Path "C:\pc"
$ace = New-Object System.Security.Accesscontrol.FileSystemAccessRule ("testuser", "Read", "Allow")
$acl.AddAccessRule($ace)
Set-Acl -Path "C:\pc" -AclObject $acl
Der erste Befehl ruft die vorhandenen ACL-Regeln ab. Der zweite Befehl erstellt eine neue anzuwendende FileSystemAccessRule
.
Der dritte Befehl fügt die neue ACL-Regel zu den vorhandenen Berechtigungen für den Ordner hinzu. Der vierte Befehl verwendet Set-Acl
, um die neue ACL auf den Ordner anzuwenden.
Mit dem folgenden Befehl können Sie die Berechtigungen aller Benutzer anzeigen.
(Get-ACL -Path "C:\pc").Access | Format-Table IdentityReference,FileSystemRights,AccessControlType
Ausgang:
IdentityReference FileSystemRights AccessControlType
----------------- ---------------- -----------------
DelftStack\rhntm FullControl Allow
DelftStack\testuser Read, Synchronize Allow
Systemadministratoren konfigurieren NTFS-Berechtigungen für viele Ordner und Dateien mithilfe von Skripts, um den Vorgang zu beschleunigen und zu vereinfachen. Wir hoffen, dass Ihnen dieser Artikel dabei geholfen hat, zu verstehen, wie Sie mithilfe von PowerShell Berechtigungen für Ordner rekursiv festlegen.
Für den detaillierten NTFS-Berechtigungstyp in PowerShell lesen Sie diesen Beitrag.