Manual method
Deleting virtual folders can be done by manually editing each virtual folder, saving the changes and converting them into real folders. However, this process becomes time-consuming when dealing with a significant number of virtual folders, as it requires converting each one manually.
PowerShell method
Before proceeding with the PowerShell method, please take note of the following:
- This method deletes all virtual folders in the data source vaults.
- Delete duplicate folders before running the PowerShell script from the new entry.
- Launch Remote Desktop Manager as an administrator by right-clicking on the application and choosing Run as administrator.
- Select the data source vaults from which you want to convert all virtual folders in the Navigation pane.
- Add a new entry.
- Go to Session – PowerShell to create a PowerShell session entry.
- Name the entry and choose the folder in which you want to create it.
- Set the entry to Embedded Script.
- Click on Edit embedded script.
- Add the following script:
#check if Remote Desktop Manager PS module is installedif(-not (Get-Module Devolutions.PowerShell -ListAvailable)){ Install-Module Devolutions.PowerShell -Scope CurrentUser}$beforeAllGroups = Get-Date$vaults = Get-RDMVaultforeach ($vault in $vaults){ Set-RDMCurrentRepository -Repository $vault $vaultname = $vault.Name Write-Host "Current Vault is "$vaultname # Get all entries' folder path $sessions = Get-RDMSession $allGroups = @() foreach($session in $sessions) { # Split the group folder location for each shortcut $tempFolder = $session.Group $shortcuts = $tempFolder.split(';') foreach ($shortcut in $shortcuts) { $folder = $shortcut if ($folder) { $levels = $folder.split('\') $nblevels = 1 $Groupfolder = "" foreach($level in $levels) { $name = $level if ($nblevels -eq 1) { $Groupfolder = $name } else { $Groupfolder = $Groupfolder + "\" + $name } $item = New-Object PSObject -Property @{Name = $name; Group = $Groupfolder; Levels = $nbLevels} $allGroups += $item $nblevels++ } } } } # Get all folders that exist in the database $groups = Get-RDMSession | where {$_.ConnectionType -eq "Group"} $realGroups = @() foreach ($group in $groups) { # Split the group folder location for each shortcut $tempFolder = $group.Group $shortcuts = $tempFolder.split(';') foreach ($shortcut in $shortcuts) { $folder = $group.Group if ($folder) { $levels = $folder.split('\') $nbLevels = $levels.Count $name = $group.Name $item = New-Object PSObject -Property @{Name = $name; Group = $folder; Levels = $nbLevels} $realGroups += $item } } } # Sort arrays and extratc virtual folders $realGroups = $realGroups | Sort-Object -Property Levels, Name, Group -Unique $allGroups = $allGroups | Sort-Object -Property Levels, Name, Group -Unique $results = $allGroups | where {$realGroups.Group -notcontains $_.Group} $results = $results | Sort-Object -Property Levels, Name, Group -Unique # Convert virtual folders in the database foreach ($group in $results) { $name = $group.Name $folder = $group.Group try { $session = New-RDMSession -Name $name -Group $folder -Type Group -SetSession -ErrorAction Stop Update-RDMUI } catch { # Split the parent folder $tempFolder = $folder.Replace("\$name",'') $parents = $tempFolder.split('\') foreach ($parent in $parents) { try { $exist = Get-RDMSession -Name $parent -ErrorAction Stop } catch { $name = $parent $index = $parents.Indexof($parent) $folder = "" for ($item = 0;$item -le $index;$item++) { if ($item -gt 0) { $folder += "\" } $folder += $parents[$item] } $session = New-RDMSession -Name $name -Group $folder -Type Group -SetSession Update-RDMUI Write-Host "Virtual folder $name has been successfully created in the database!" } } $name = $group.Name $folder = $group.Group $session = New-RDMSession -Name $name -Group $folder -Type Group -SetSession Update-RDMUI } Write-Host "Virtual folder $name has been successfully created in the database!" }}$afterCreatingGroups = Get-DateWrite-Host "Time taken to convert virtual folders: $(($afterCreatingGroups).Subtract($beforeAllGroups).Seconds) second(s)"
- Click OK to apply the script.
- Click OK the save the entry settings and close the window.
- Click on Open Session to run the entry.
The script will now convert all virtual folders in the data source vaults.