func_New-AlocDVLSCostumer.ps1
Function New-AlocDVLSCostumer{ [CmdletBinding(DefaultParameterSetName = 'Update')] param( #When Adding [string][Parameter(ParameterSetName = "Add")]$SHORTName, [string][Parameter(ParameterSetName = "Add")]$LongName, #When Updating [string][Parameter(ParameterSetName = "Update")]$FolderName, #Allways [string][Parameter(ParameterSetName = "Add")][Parameter(ParameterSetName = "Update")]$BaseFolder = "" ) if (-not (Get-Module RemoteDesktopManager)){ try { Write-Host "Importing RemoteDesktopManager" Import-Module RemoteDesktopManager -ErrorAction Stop } catch { Write-Host "Module didn't load installing RemoteDesktopManager" Install-Package RemoteDesktopManager -Force try { Write-Host "Retrying import of RemoteDesktopManager" Import-Module RemoteDesktopManager -ErrorAction Stop } catch { Wirte-Host "Can't install or import RemoteDesktop" } } } try { $Cred = Import-Clixml .\DVLSAppID.clixml } catch { Write-Warning 'DVLSAppID.clixml not found create one with AppID/Password to DVLS by executing "@{ID="<<App_ID>>";PW="<<App_Password>>"}|Export-Clixml DVLSAppID.clixml"' } $ds = New-RDMDataSource -Name "DVLS" -DVLS -Server "https://DVLS.aloc.com" -ScriptingTenantID $Cred.ID -ScriptingApplicationPassword $cred.PW #Set-RDMDataSource $ds # this saves the data source to disk Set-RDMCurrentDataSource $ds $SHORTName = (Read-Host -Prompt "Venligst indskriv kundens 4 bogstav's shortname") $LongName = (Read-Host -Prompt "Venligst indskriv kundens officelle") $BaseFolder = (Read-Host -Prompt "Venligst indskriv hvilken mappe, kunden skal oprettes i. normalt er det roden. Tryk blot enter hvis den skal ligge i roden") #$BaseFolder = "" #$FolderName = "SKAN - Skandia" if ($FolderName -eq ""){ if ($SHORTName -ne "" -and $LongName -ne ""){ Write-Host "Using Shortname and Longname" $FolderName = "$SHORTName - $LongName" }else{ Write-host "Please Provide Both ShortName and LongName or FolderName" } } $ErrorActionPreference = "Stop" try { if ($BaseFolder -eq "") { $RootS = Get-RDMSession -Group $FolderName }else{ $RootS = Get-RDMSession -Group "$BaseFolder\$FolderName" } Write-Host "Update root" }catch{ Write-Host "Creating Costumer root" $RootS = New-RDMSession -Group "$BaseFolder" -Host "None" -Name $FolderName -Type Group $RootS.ImageName = "SampleOffice1Yellow" $RootS.CredentialConnectionID = "88E4BE76-4C5B-4694-AA9C-D53B7E0FE0DC" # Search User Vault for credentials $RootS.CredentialPrivateVaultSearchString = $SHORTName Set-RDMSession $RootS -ErrorAction Stop } Write-Host "Costumer root - Done" function New-CatagoryFolder { param ( $Catagory, $ImageName, $Path ) try { $CatagoryS = Get-RDMSession -GroupName "$($Path.Group)\$Catagory" Write-Host "Updating $Catagory" } catch { Write-Host "Creating $Catagory" $CatagoryS = New-RDMSession -Group "$($Path.Group)\$Catagory" -Host "None" -Name "$Catagory" -Type Group } $CatagoryS.ImageName = $ImageName $CatagoryS.CredentialConnectionID = "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF" #Inherited $CatagoryS.Security.RoleOverride = "Inherited" Set-RDMSession $CatagoryS return $CatagoryS Write-Host "$Catagory - Done" } function New-CatagorySubfolder { param ( $FolderPath, $Folder, $ImageName, $FolderName ) try { $SubS = Get-RDMSession -GroupName "$($FolderPath.Group)\$FolderName" -IncludeSubFolders:$false -ErrorAction Stop $Subs = $SubS | Where-Object {$_.ConnectionType -eq "Group"} Write-Host "Updating $FolderName under $Folder" } catch { Write-Host "Creating $FolderName under $Folder" $SubS = New-RDMSession -Group "$($FolderPath.Group)\$FolderName" -Host "None" -Name "$FolderName" -Type Group } if ($FolderName -eq "Shared") { $FolderConNames = "PORTMAN","IDEAS","DATA" }else{ $FolderConNames = $FolderName } #"$($FolderPath.Group)\$FolderName" $SubS.ImageName = $ImageName $SubS.CredentialConnectionID = "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF" #Inherited $SubS.Security.RoleOverride = "Custom" $SubS.Security.ViewOverride = "Custom" $RORights = @("ViewPassword","Execute","Attachment","Handbook") $RWRights = @("Add","Edit","Delete","Move","ViewPassword","Execute","Attachment","Handbook","EditAttachment","EditHandbook") $RightsLevels = @("RO","RW") foreach ($Level in $RightsLevels) { if ($Level -eq "RO"){ $Rights = $RORights }elseif ($Level -eq "RW") { $Rights = $RWRights }else{ Write-Host "Scripter fucked up" End } foreach ($ConFolder in $FolderConNames) { $AccessGroup = "FolderACL-$ConFolder-$Level" if ($SubS.Security.ViewRoles -notcontains $AccessGroup){ $SubS.Security.ViewRoles += $AccessGroup } foreach ($Right in $Rights) { $Perms = @() $Perms = $SubS.Security.Permissions $ExistingPerm = $Perms | Where-Object {$_.Right -contains $Right} if ($ExistingPerm.count -eq 1) { $ExistingPerm.Roles += $AccessGroup }else{ if ($ExistingPerm.count -gt 1) { $SubS.Security.Permissions = $null } $Perm = New-Object Devolutions.RemoteDesktopManager.Business.ConnectionPermission $Perm.Right = $Right $Perm.Override = "Custom" $Perm.Roles = $AccessGroup $SubS.Security.Permissions += $Perm } } } } Set-RDMSession $SubS Write-Host "$FolderName under $Folder - Done" } $Credentials = New-CatagoryFolder -Catagory "Credentials" -ImageName "SampleKey2Yellow" -Path $RootS #$Connections = New-CatagoryFolder -Catagory "Connections" -ImageName "SampleServerFarmAYellow" -Path $RootS $Documentation = New-CatagoryFolder -Catagory "Documentation" -ImageName "SampleDocumentGroup2Yellow" -Path $RootS New-CatagorySubfolder -FolderPath $Credentials -Folder "Credentials" -FolderName "PORTMAN" -ImageName "SampleSerialYellow" New-CatagorySubfolder -FolderPath $Credentials -Folder "Credentials" -FolderName "IDEAS" -ImageName "SampleSerialYellow" #New-CatagorySubfolder -FolderPath $Credentials -Folder "Credentials" -FolderName "DATA" -ImageName "SampleSerialYellow" New-CatagorySubfolder -FolderPath $Credentials -Folder "Credentials" -FolderName "Shared" -ImageName "SampleSerialYellow" #New-CatagorySubfolder -FolderPath $Connections -Folder "Connections" -FolderName "PORTMAN" -ImageName "SampleSerialYellow" #New-CatagorySubfolder -FolderPath $Connections -Folder "Connections" -FolderName "IDEAS" -ImageName "SampleSerialYellow" #New-CatagorySubfolder -FolderPath $Connections -Folder "Connections" -FolderName "DATA" -ImageName "SampleSerialYellow" #New-CatagorySubfolder -FolderPath $Connections -Folder "Connections" -FolderName "Shared" -ImageName "SampleSerialYellow" New-CatagorySubfolder -FolderPath $Documentation -Folder "Documentation" -FolderName "PORTMAN" -ImageName "SampleDocumentGroupYellow" New-CatagorySubfolder -FolderPath $Documentation -Folder "Documentation" -FolderName "IDEAS" -ImageName "SampleDocumentGroupYellow" #New-CatagorySubfolder -FolderPath $Documentation -Folder "Documentation" -FolderName "DATA" -ImageName "SampleDocumentGroupYellow" New-CatagorySubfolder -FolderPath $Documentation -Folder "Documentation" -FolderName "Shared" -ImageName "SampleDocumentGroupYellow" } |