Hey Folks,
here is an example to easy set ACLs on a Windows fileserver by importing path an permissions from a CSV file:
$Permissions = Import-Csv e:\permissions.csv -delimiter '|' ForEach ($line in $Permissions) { $acl = Get-Acl $line.Path $acl.SetAccessRuleProtection($True, $False) $rule = New-Object System.Security.AccessControl. FileSystemAccessRule($line.Group,"Modify","ContainerInherit, ObjectInherit", "None", "Allow") #------------------------------------------------------------- # The above line can be edited like the reference at the end. #------------------------------------------------------------- $acl.AddAccessRule($rule) Set-Acl $line.Path $acl }
The CSV has to look like this:
Path|Group e:\folder1\subfolder1|domain\group1 e:\folder1|subfolder2|domain\group2 e:\folder2|subfolder1|domain\group3 e:\folder2|subfolder2|domain\group4
Reference Table:
Subfolders and Files only | InheritanceFlags.ContainerInherit, InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly |
This Folder, Subfolders and Files | InheritanceFlags.ContainerInherit, InheritanceFlags.ObjectInherit, PropagationFlags.None |
This Folder, Subfolders and Files | InheritanceFlags.ContainerInherit, InheritanceFlags.ObjectInherit, PropagationFlags.NoPropagateInherit |
This folder and subfolders | InheritanceFlags.ContainerInherit, PropagationFlags.None |
Subfolders only | InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly |
This folder and files | InheritanceFlags.ObjectInherit, PropagationFlags.None |
This folder and files | InheritanceFlags.ObjectInherit, PropagationFlags.NoPropagateInherit |
Source: http://powershell.nicoh.me/powershell-1/files-and-folders/set-folders-acl-owner-and-ntfs-rights
Cheers, Chris