With the rebranding of VMware Horizon Client to Omnissa Horizon Client, one of the often overlooked aspects is the migration of user settings.
In the context in which I had to operate, the main need was to replicate the Horizon Client settings (from VMware to Omnissa version) in a VDI context. The basic settings to be copied were those of “Drive & Folder Sharing”
In enterprise environments – especially non-persistent VDI managed with Omnissa Dynamic Environment Manager (DEM) – it is critical to ensure that:
• The user’s settings are retained
• The migration takes place only once
• There is no impact on subsequent logons
In this article, we look at how to automatically migrate Horizon client settings:
• by:
%AppData%\VMware\VMware Horizon View Client
•at:
%AppData%\Omnissa\Omnissa Horizon Client
using a PowerShell script that is properly integrated into Omnissa DEM.
Prerequisites
Configuring DEM to export customizations of:
Precisely:



.
.
Approach
The solution is based on three key concepts:
1.PowerShell script in user context
2.Logon Task in Flex Configuration (DEM)
3.Condition based on HKCU registry key to ensure one-time execution
The registry key is saved in the user profile and managed by DEM, making the solution compatible with:
• Floating VDI
• Non-persistent desktops
• DEM profiles
.
PowerShell Scripts
The following script:
• Check if the migration has already taken place
• Copy settings, if any
•writes a registry key to block subsequent executions
# ==============================
# Omnissa Horizon Client Migration
# ==============================
$SourcePath = Join-Path $env:APPDATA "VMware\VMware Horizon View Client"
$DestinationPath = Join-Path $env:APPDATA "Omnissa\Omnissa Horizon Client"
# Registry key (per-utente)
$RegPath = "HKCU:\Software\Omnissa\Migrations"
$RegName = "HorizonClientSettingsMigrated"
# ---- Controllo se già eseguito ----
if (Test-Path $RegPath) {
$Migrated = Get-ItemProperty -Path $RegPath -Name $RegName -ErrorAction SilentlyContinue
if ($Migrated.$RegName -eq 1) {
exit 0
}
}
# ---- Verifica sorgente ----
if (-not (Test-Path $SourcePath)) {
# Scriviamo comunque la chiave per evitare retry inutili
New-Item -Path $RegPath -Force | Out-Null
New-ItemProperty -Path $RegPath -Name $RegName -Value 1 -PropertyType DWORD -Force | Out-Null
exit 0
}
# ---- Creazione destinazione ----
New-Item -Path $DestinationPath -ItemType Directory -Force | Out-Null
# ---- Copia contenuto ----
Copy-Item -Path "$SourcePath\*" `
-Destination $DestinationPath `
-Recurse `
-Force `
-ErrorAction SilentlyContinue
# ---- Scrittura chiave di completamento ----
New-Item -Path $RegPath -Force | Out-Null
New-ItemProperty -Path $RegPath -Name $RegName -Value 1 -PropertyType DWORD -Force | Out-Null
exit 0
We place the script in the DEM Config share by creating a folder calling it script. In my case
C:\DEMConfig\Script

.
Configuration in Omnissa DEM
The script must be configured as a Logon Task so from the DEM console:
• User Environment→ Logon Tasks
• Name:
Migrate Horizon Client Settings (VMware → Omnissa)
• Command:
powershell.exe -ExecutionPolicy Bypass -NoProfile -File \\fs02.poultry.lan\DEMConfig\Scripts\Migrate-HorizonClientSettings.ps1

Condition (fundamental)
• Hive: HKEY_CURRENT_USER
• Key: Software\Omnissa\Migrations
• Value: HorizonClientSettingsMigrated
is not equal to 1

This is the video where I try all the steps

































































