Mit PowerShell Filesystem-Rechte setzen: ACL


Um bei einem bestehenden Ordner einen User mit Schreib-Berechtigungen hinzuzufĂŒgen, kann folgendes Skript verwendet werden:

$folder="C:\Myfolder"
$username="Benutzername"
$permission="Modify"

$Acl = Get-Acl $folder
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule($username,$permission,'ContainerInherit,ObjectInherit', 'None', 'Allow')
$Acl.SetAccessRule($Ar)
Set-Acl $folder $Acl

Das Skript ließt die aktuellen Berechtigungen aus und schreibt diese in die Variable $Acl. Im Anschluss wird ein Berechtigungs-Objekt mit dem User und den gewĂŒnschten Berechtigungen erstellt und in der Variable $Ar gespeichert. Zu guter Letzt wird das erstellte Objekt ($Ar) dann zu den zuvor ausgelesenen Berechtigungen hinzugefĂŒgt und diese dann auf den Ordner geschrieben: Set-Acl

Mit "ContainerInherit und ObjectInherit wird das Recht auf den Ordner und deren Files gesetzt.

Als Berechtigung könnte anstelle von "Modify" z.B. auch "FullControll" verwendet werden.

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE fĂŒr deine Bewertung!

Veröffentlichung: 26.08.2020 von Bernhard 🔔


Top-Artikel in diesem Bereich


AD: Active Directory Daten auslesen
Mit Windows PowerShell Active Directory Objekte auslesen.

PowerShell: Dateiattribute: Datum Àndern - ganz ohne Tools
Als Alternative zu speziellen Programmen kann auch mit PowerShell das Datum einer Datei oder eines Ordners geÀndert werden. 

PowerShell Email versenden: Send-MailMessage
In PowerShell kann ĂŒber einen einfachen Befehl eine Email versendet werden: "Send-MailMessage". Mit dem Befehl kann das Versenden von Mails außerhalb der Applikation rein mit PowerShell getestet werden:

Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

✍anonym
25.10.2022 12:39
Hi,

ich versuche gerade Dein Script in meinen Prozess mit einzubauen. Leider taucht da eine Fehlermeldung auf, die ich nicht verstehe:

New-Object : FĂŒr "FileSystemAccessRule" und die folgende Argumenteanzahl kann keine Überladung gefunden werden: "5".
In C:\Scripts\New AD User.ps1:29 Zeichen:7
+ $Ar = New-Object  system.security.accesscontrol.filesystemaccessrule( ...
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
 
Ausnahme beim Aufrufen von "SetAccessRule" mit 1 Argument(en):  "Der Wert darf nicht NULL sein.
Parametername: rule"
In C:\Scripts\New AD User.ps1:31 Zeichen:1
+ $Acl.SetAccessRule($Ar)
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ArgumentNullException

Was kann das bedeuten?