[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 $Parameters = @{ Name=$ProjectName Path=$projPath } $share = New-SmbShare @Parameters $share|Set-SmbShare -FolderEnumerationMode AccessBased $share|Grant-SmbShareAccess -AccountName $ReadTarget.Name -AccessRight Read $share|Grant-SmbShareAccess -AccountName $WriteTarget.Name -AccessRight Change return $ret } throw "ProjectName parameter needs to be set"