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 )
}
({{pro_count}})
Beitrag bewerten:{{percentage}} % positiv
({{con_count}})
DANKE für deine Bewertung!
Fragen / Kommentare
(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]
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?