La suppression des dossiers virtuels peut être effectuée en éditant manuellement chaque dossier virtuel, en enregistrant les modifications et en les convertissant en dossiers réels. Cependant, ce processus devient chronophage lorsqu'on traite un nombre significatif de dossiers virtuels, car il nécessite de les convertir un par un.
Méthode PowerShell
Avant de procéder avec la méthode PowerShell, veuillez noter ce qui suit :
Cette méthode supprime tous les dossiers virtuels dans les coffres de la source de données.
Supprimer les dossiers en double avant d'exécuter le script PowerShell depuis la nouvelle entrée.
-
Lancer Remote Desktop Manager en tant qu'administrateur en cliquant avec le bouton droit sur l'application et en choisissant Exécuter en tant qu'administrateur.
-
Sélectionner les coffres de sources de données à partir desquels vous voulez convertir tous les dossiers virtuels dans le Volet de navigation.
-
Ajouter une nouvelle entrée.
-
Aller à Session – PowerShell pour créer une entrée de session PowerShell.
-
Nommer l'entrée et choisir le dossier dans lequel vous souhaitez la créer.
-
Définir l'entrée sur Embedded Script.
-
Cliquer sur Edit embedded script.
-
Ajouter le script suivant :
# Check if Remote Desktop Manager PS module is installed if (-not (Get-Module Devolutions.PowerShell -ListAvailable)) { Install-Module Devolutions.PowerShell -Scope CurrentUser } $beforeAllGroups = Get-Date $vaults = Get-RDMVault foreach ($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-Object { $_.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 extract virtual folders $realGroups = $realGroups | Sort-Object -Property Levels, Name, Group -Unique $allGroups = $allGroups | Sort-Object -Property Levels, Name, Group -Unique $results = $allGroups | Where-Object { $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-Date Write-Host "Time taken to convert virtual folders: $(($afterCreatingGroups).Subtract($beforeAllGroups).Seconds) second(s)"
-
Cliquer sur OK pour appliquer le script.
-
Cliquer sur OK pour enregistrer les paramètres de l'entrée et fermer la fenêtre.
-
Cliquer sur Open Session pour exécuter l'entrée.
Le script va maintenant convertir tous les dossiers virtuels dans les coffres de sources de données.