# Ordner und Dateien nicht ändern/bearbeiten/löschen mit PowerShell Skript



## Lockjaw (23. April 2019)

Hallo,

ich bin neu hier und hoffe, dass ihr mir bei meinem Anliegen helfen könnt 
Ich habe vor, die Berechtigungen für Ordner und Unterordner per PowerShell Skript zu vergeben. Dabei sollen alle (bis auf die Admins) nur Daten in die (Unter)Ordnern ablegen können und diese öffnen. In diesem Ordner dürfen die Dateien (Inhalt und Name) nicht geändert oder gelöscht werden. Das selbe gilt auch für die Ordner.

Da ich noch in der Schreib bzw. Test-Phase bin, reduziere ich das ganze natürlich auf ein Test-Ordner, worauf ein Test-User folgende Berechtigungen bekommen soll:



```
########################################################################################################################
##########################################################################################################################
#
# Author:    Name
#
# Date:        23.04.2019
#
# Version:    1.00    
#
# Comment:    .\FolderScript.ps1     Searches for folders in the specifies filesystem and modifies the NTFS accessrights.
#                
#
##########################################################################################################################

##########################################################################################################################
#
# Constants and variables
#
##########################################################################################################################



$StartPath = "\\Pfad des Ordners"

##########################################################################################################################
#
# Functions
#
##########################################################################################################################

function Process-ACL ($Folder)
{
        #read current acl
        $acl = Get-Acl $Folder
        #disable inheritance
        $acl.SetAccessRuleProtection($True, $False)
        #set-owner -needed for altering the access rights
        $acl.SetOwner([System.Security.Principal.NTAccount] "Lokaler Admin")
        #build the new permissions
        #default permissions
    
        $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
        $acl.AddAccessRule($rule)
            Set-ACL Folder $acl
        $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("System","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
        $acl.AddAccessRule($rule)
           Set-ACL $Folder $acl
        $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domäne\Domain Admins","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
        $acl.AddAccessRule($rule)    
        Set-ACL $Folder $acl
        $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domäne\user-test","ReadAndExecute", "ContainerInherit, ObjectInherit", "None", "Allow")
        $acl.AddAccessRule($rule)    
        Set-ACL $Folder $acl
        

}
    
    
    
##########################################################################################################################
#
# Main code
#
##########################################################################################################################

$Folders = Get-ChildItem $StartPath  -recurse | ? {($_.psiscontainer)}


    ##################################################################################################
    # main loop 
        foreach ($Folder in $Folders.Fullname) {
    
        Process-ACL ($Folder)            
    }
    # End main loop
    ##################################################################################################
    ##################################################################################################
```

Das setzen der Berechtigung zum änder/löschen funktioniert soweit, auch wenn ich im PowerShell relativ viele rote Meldungen bekomme. 
Im File-System wurden alle User/Gruppen hinzugefügt mit den entsprechenden Berechtigungen.
Das Problem ist jetzt, dass ich auch keine Berechtigung habe, Dateien in den Haupt- und Unterordner zu abzuspeichern.

Gibt es hier eine Möglichkeit dies umzusetzen, ohne dem User Schreibrechte zu geben?


----------

