[CmdletBinding()] param ( [string] $ProjectName, [string] $Server ) . .\Variables.ps1 $ret=$null $acls=$null $rs=$null $projPath=$BaseDirectory+$ProjectName Write-Host $projPath $testFolder = Test-Path -Path $projPath -PathType Container if($testFolder){ throw "Directory already exists. Not creating Folder or Share" } if($PSBoundParameters.ContainsKey("ProjectName")){ if($PSBoundParameters.ContainsKey("Server")){ $ret = New-ADGroup -Path $Projects -Server $Server -Name $ProjectName -GroupCategory Security -GroupScope Global -PassThru #$ret = Get-ADGroup $ProjectName -SearchBase $Projects -Server $Server $acls = . .\AddProjectACL.ps1 -ProjectName $ProjectName -Server $Server $rs = . .\AddProjectRoles.ps1 -ProjectName $ProjectName -Server $Server #$ret | Add-ADGroupMember -Members $acl,$r $acls | ForEach-Object {add-ADGroupMember -Identity $ret -Members $_ -Server $Server} $rs | ForEach-Object {Add-ADGroupMember -Identity $ret -Members $_ -Server $Server} } else { $ret = New-ADGroup -Path $Projects -Name $ProjectName -GroupCategory Security -GroupScope Global -PassThru #$ret = Get-ADGroup $ProjectName -SearchBase $Projects $acls = . .\AddProjectACL.ps1 -ProjectName $ProjectName $rs = . .\AddProjectRoles.ps1 -ProjectName $ProjectName #$ret | Add-ADGroupMember -Members $acl,$r $acls | ForEach-Object {Add-ADGroupMember -Identity $ret -Members $_} $rs | ForEach-Object {Add-ADGroupMember -Identity $ret -Members $_} } if($PSBoundParameters.ContainsKey("Server")){ $target = $acls | Where-Object Name -Match ".*-RW" $member = $rs | Where-Object Name -Match ".*-RW" Add-ADGroupMember -Identity $target -Members $member -Server $Server $target = $acls | Where-Object Name -Match ".*-RO" $member = $rs | Where-Object Name -Match ".*-RO" Add-ADGroupMember -Identity $target -Members $member -Server $Server } else { $target = $acls | Where-Object Name -Match ".*-RW" $member = $rs | Where-Object Name -Match ".*-RW" Add-ADGroupMember -Identity $target -Members $member $target = $acls | Where-Object Name -Match ".*-RO" $member = $rs | Where-Object Name -Match ".*-RO" Add-ADGroupMember -Identity $target -Members $member } $folder = New-Item -Path $projPath -ItemType Directory $ReadTarget = $acls | Where-Object Name -Match ".*-RO" $WriteTarget = $acls | Where-Object Name -Match ".*-RW" Write-Host $ReadTarget.Name Write-Host $WriteTarget.Name $FolderACL= Get-Acl -Path $folder $rid = $ReadTarget.Name $wid = $WriteTarget.Name $fsrr = "Read" $fsrr = "Write" $type = "Allow" $fsarar = @($rid,$fsrr,$type) $fsaraw = @($wid,$fsrw,$type) $fileSystemAccessRuleR = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fsarar $fileSystemAccessRuleW = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fsaraw $FolderACL.SetAccessRule($fileSystemAccessRuleR) $FolderACL.SetAccessRule($fileSystemAccessRuleW) return $ret } throw "ProjectName parameter needs to be set"