Mit PowerShell Filesystem-Rechte setzen: ACL

 

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

Berechtigung hinzufügen

$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 liest 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.

Vererbung unterbrechen

    $Acl.SetAccessRuleProtection($True, $True)

Berechtigung entfernen

    $aclRemove = $acl.Access | ?{ $_.IdentityReference -eq 'BUILTIN\Users' }
    if ($acesToRemove) {
        $acl.RemoveAccessRuleAll($aclRemove )
    }
positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

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?

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details