View difference between Paste ID: nHfqWQAR and gqC4TYDE
SHOW: | | - or go back to the newest paste.
1
#Used to create multiple individual folders on a shared drive
2
#Restricts rights to those approved through the $accessCSV (name[account name],access[level of access],type[allow/deny])
3
#Creates folder for all users in $importfile (displayName,samaccountname)
4
#Will disable inheritance and remove inherited rights from folder, while applying restrictions based on $accessCSV
5
#Children of new folder will have rights propagate correctly, while not having the root share's permissions inherit 
6
Param(
7
	[string]$username,
8
	[string]$importfile,
9
	[string]$accessCSV,
10
	[string]$folderroot,
11
	[string]$domain
12
)
13
#import user list
14
$folderList = Import-Csv -Path $importfile
15
#import ACLs
16
$accessList = Import-Csv -Path $accessCSV
17
#start folder creation loop
18
$folderList|
19
%{
20
	#pull user display name
21
	$folderName = $_.name
22
	#sets samaccountname for ACL addition
23
	$accountName = $domain + "\" + $_.samaccountname
24
	#creates folder path
25
	$folderPath = $folderroot + "\" + $folderName
26
	#test if folder exists
27
	$exist = Test-Path -Path $folderPath
28
	#create folder loop
29
	if ($exist -ne $true)
30
	{
31
		#create folder
32
		New-Item -ItemType "directory" -Path $folderPath
33
		#get current ACL
34
		$acl = Get-Acl $folderPath
35
		#sets inheritance to allow ACL to propigate to children of new folder
36
		$inheritanceFlags = "ContainerInherit, ObjectInherit"
37
		$propagationFlags = "none"
38
		$folderAccess = "Allow"
39
		#populates ACL based on CSV with accounts (administration, administors etc)
40
		$accessList|
41
			%{
42
				$user = $_.name
43
				$access = $_.access
44
				$type = $_.type
45
				#creates ACL rule
46
				$allowAccess = New-Object System.Security.AccessControl.FileSystemAccessRule ($user, 								$access,$inheritanceFlags,$propagationFlags,$type)
47
				#applies ACL rule
48
				$acl.SetAccessRule($allowAccess)
49
				#saves ACL rule
50
				Set-Acl -Path $folderPath -AclObject $acl
51
			}
52
		#creates ACL for myself *MAY NOT NEED*
53
		$allowAccess = New-Object System.Security.AccessControl.FileSystemAccessRule ($username, 			"FullControl",$inheritanceFlags,$propagationFlags, "Allow")
54
		#applies ACL rule
55
		$acl.SetAccessRule($allowAccess)
56
		#saves new ACL
57
		Set-Acl -Path $folderPath -AclObject $acl
58
		#creates ACL for user
59
		$allowAccess = New-Object System.Security.AccessControl.FileSystemAccessRule ($accountName,"FullControl",$inheritanceFlags,$propagationFlags,$folderAccess)
60
		#applies ACL rule
61
		$acl.SetAccessRule($allowAccess)
62
		#saves ACL rule
63
		Set-Acl -Path $folderPath -AclObject $acl
64
		#disables inheritance and removes inherited rights
65
		$acl.SetAccessRuleProtection(1,0)
66
		#saves inheritance rule
67
		Set-Acl -Path $folderPath -AclObject $acl
68
	If ($exist -eq $true)
69
	{
70
		Write-Host "Folder already exists for $folderName"
71
	}
72
}