Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Used to create multiple individual folders on a shared drive
- #Restricts rights to those approved through the $accessCSV (name[account name],access[level of access],type[allow/deny])
- #Creates folder for all users in $importfile (displayName,samaccountname)
- #Will disable inheritance and remove inherited rights from folder, while applying restrictions based on $accessCSV
- #Children of new folder will have rights propagate correctly, while not having the root share's permissions inherit
- Param(
- [string]$username,
- [string]$importfile,
- [string]$accessCSV,
- [string]$folderroot,
- [string]$domain
- )
- #import user list
- $folderList = Import-Csv -Path $importfile
- #import ACLs
- $accessList = Import-Csv -Path $accessCSV
- #start folder creation loop
- $folderList|
- %{
- #pull user display name
- $folderName = $_.name
- #sets samaccountname for ACL addition
- $accountName = $domain + "\" + $_.samaccountname
- #creates folder path
- $folderPath = $folderroot + "\" + $folderName
- #test if folder exists
- $exist = Test-Path -Path $folderPath
- #create folder loop
- if ($exist -ne $true)
- {
- #create folder
- New-Item -ItemType "directory" -Path $folderPath
- #get current ACL
- $acl = Get-Acl $folderPath
- #sets inheritance to allow ACL to propigate to children of new folder
- $inheritanceFlags = "ContainerInherit, ObjectInherit"
- $propagationFlags = "none"
- $folderAccess = "Allow"
- #populates ACL based on CSV with accounts (administration, administors etc)
- $accessList|
- %{
- $user = $_.name
- $access = $_.access
- $type = $_.type
- #creates ACL rule
- $allowAccess = New-Object System.Security.AccessControl.FileSystemAccessRule ($user, $access,$inheritanceFlags,$propagationFlags,$type)
- #applies ACL rule
- $acl.SetAccessRule($allowAccess)
- #saves ACL rule
- Set-Acl -Path $folderPath -AclObject $acl
- }
- #creates ACL for myself *MAY NOT NEED*
- $allowAccess = New-Object System.Security.AccessControl.FileSystemAccessRule ($username, "FullControl",$inheritanceFlags,$propagationFlags, "Allow")
- #applies ACL rule
- $acl.SetAccessRule($allowAccess)
- #saves new ACL
- Set-Acl -Path $folderPath -AclObject $acl
- #creates ACL for user
- $allowAccess = New-Object System.Security.AccessControl.FileSystemAccessRule ($accountName,"FullControl",$inheritanceFlags,$propagationFlags,$folderAccess)
- #applies ACL rule
- $acl.SetAccessRule($allowAccess)
- #saves ACL rule
- Set-Acl -Path $folderPath -AclObject $acl
- #disables inheritance and removes inherited rights
- $acl.SetAccessRuleProtection(1,0)
- #saves inheritance rule
- Set-Acl -Path $folderPath -AclObject $acl
- If ($exist -eq $true)
- {
- Write-Host "Folder already exists for $folderName"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement