Set NTFS Permissions via Powershell
Für die Migration eines Fileservers musste ich die NTFS-Berechtigungen neu setzen. Da mir die manuelle Berechtigung zu umständlich war, wollte ich das per Powershell durchführen. Die Berechtigung ist nicht ganz einfach zu setzen und auch nicht gleich verständlich. Hier ein Skript, welches ich verwendet habe um die entsprechenden Berechtigungen zu setzen. darin sind auch einige Ausführungen beinhaltet.
Eine sehr gute Übersicht wie ACLs zu setzen sind, findet man hier:
blue42: Changing NTFS Security Permissions using PowerShell
Eine sehr gute Übersicht wie ACLs zu setzen sind, findet man hier:
blue42: Changing NTFS Security Permissions using PowerShell
<# .NAME Set-NTFSPermissions.ps1 .AUTHOR Ralf Entner .SYNOPSIS Script set NTFS permissions for a folder. .DESCRIPTION Script set NTFS permissions for a folder. It will get the original acces controll list (ACL), adds the permissions, remove inhitered permissions and save the new ACL. .NOTES .COMPONENT No powershell modules needed .LINK https://blue42.net/windows/changing-ntfs-security-permissions-using-powershell/#propagation-flags .Parameter ParameterName #> # Folder $Folder = "C:\Data\Produktion" # Get ACL From Folder $acl = Get-Acl -Path $Folder # Generate access tokens # 1: group (with domain part) # 2: permission # 3: inheritance flag # 4: propagation flag # 5: allow or deny permission # For flags 3 and 4 look at: https://blue42.net/windows/changing-ntfs-security-permissions-using-powershell/#propagation-flags $mdRule = New-Object System.Security.AccessControl.FileSystemAccessRule("acme\FS_Produktion_M","Modify","ContainerInherit,ObjectInherit","None","Allow") $roRule = New-Object System.Security.AccessControl.FileSystemAccessRule("acme\FS_Produktion_R","ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow") # Disable/Enable inheritance (keep or delete inherited permissions) # The first $true says we are blocking inheritance from the parent folder. The second parameter $false removes the current inherited permissions. # OPTION 1: Block inheritance, keep inherited permissions and add the new $acl.SetAccessRuleProtection($true, $true) # OPTION 2: Block inheritance, remove inherited permissions and set only new $acl.SetAccessRuleProtection($true, $false) # Add Modify Rule to ACL Object $acl.SetAccessRule($mdRule) $acl.SetAccessRule($roRule) # Save ACL-object to folder Set-Acl -Path $folder -AclObject $acl