Quick Start

Get up and running in just a few steps:

1
Launch the Tool

Double-click HorizonAdvisor.bat or open PowerShell and run:

.\Start-HorizonAdvisor.ps1
2
Select a Tool from the Main Menu

The main menu window appears with three options:

  • Pre-Check Validations — Validate your infrastructure
  • AD LDS Operations — Manage user preference data and partitions
  • Manage Secure Gateway — Enable/disable gateway services
3
Follow the On-Screen Prompts

Each tool guides you through required inputs and confirmations.

ℹ️
You can also launch tools directly from the command line — see Automation & Scripting for examples.

System Requirements

Before you get started, make sure your system meets these minimum requirements:

RequirementDetails
Operating SystemWindows (Server or client) with network access to a Horizon Connection Server
PowerShellWindows PowerShell 5.0 or later (5.1 recommended). The graphical interface runs in STA mode automatically.
Supported Horizon versionsPre-Check validates target versions from 2006 through 2606. Partition Migration requires the environment to be upgraded to 2606 or later first.
PermissionsA domain user account with local administrator privileges on the Connection Server machine and Horizon Full Administrator role.
AD module (RSAT)The RSAT-AD-PowerShell feature is required only for Active Directory checks and only on the machine that performs them. If you run the tool as a domain user account with local administrator privileges, it can install the feature automatically.
Network AccessHTTPS (port 443) to the Horizon Connection Server; ADWS (port 9389) to a domain controller for AD checks; WinRM to target servers for remote/multi-server Pre-Check.
Browser (for PDF export)Microsoft Edge (Chromium) or Google Chrome — optional, used to convert HTML reports to PDF
ℹ️
Important: Some operations (AD LDS maintenance, Secure Gateway management) must be run directly on the Horizon Connection Server itself. Others can be run from any Windows machine with network access to the server.

Using the Graphical Interface

The Main Menu Window

When you launch Horizon Advisor without parameters, you see the main menu with a dropdown list of three tools. Pick a tool, read its description, then click Launch:

Horizon Advisor main menu with the Pre-Check tool selected
Main menu — the tool dropdown (Pre-Check shown), a description of the selected tool, and the Launch / Exit buttons.
✔️

Pre-Check Validations

Validate your environment against Horizon requirements, including Active Directory, vCenter, Server, and LDAP settings.

🧹

AD LDS Operations

Clean up stale user preference data and manage Horizon partition migrations.

🔒

Manage Secure Gateway

Enable or disable PCoIP and BLAST Secure Gateway services on the Horizon Connection Server.

How to Use the UI

1
Select a tool from the dropdown

Click the dropdown to see all available options.

2
Read the description

The panel below the dropdown explains what the selected tool does.

3
Click "Launch"

The tool opens in a new window or console.

⚠️
Every time Horizon Advisor starts, previously accepted TLS certificates are cleared. You will be re-prompted to accept any untrusted or self-signed certificates on each new run.

Launching Tools Directly from PowerShell

You can skip the main menu and launch tools directly using command-line parameters:

# Open the Pre-Check Validations tool
.\Start-HorizonAdvisor.ps1 -Flow precheck

# Open the AD LDS Operations menu
.\Start-HorizonAdvisor.ps1 -Flow 'ADLDS Operation'

# Open the Secure Gateway Manager menu
.\Start-HorizonAdvisor.ps1 -Flow 'Manage Security Gateway'

Pre-Check Validations

Use Pre-Check to validate that your infrastructure meets all requirements for Omnissa Horizon before you install or upgrade. It checks your Active Directory configuration, vCenter compatibility, server settings, LDAP connectivity, and API access, then generates a detailed report with pass/fail/warning results.

Validation Types

TypeWhat It ChecksRequired Inputs
Active Directory Forest & domain functional levels, AD schema compatibility, DNS settings, and other AD prerequisites AD FQDN, Target Horizon version
vCenter vCenter version compatibility and configuration requirements vCenter FQDN, vCenter version, Target Horizon version
Server Local OS version, Connection Server settings, and Horizon-specific server requirements Target Horizon version
LDAP Authenticates to the Horizon REST API and validates LDAP configuration on the Connection Server Admin username, domain, password (securely prompted), Target Horizon version
Capacity Provider Validates a capacity provider (e.g. Nutanix Prism Central, Amazon WorkSpaces Core) — DNS resolution, reachability, and, where applicable, provider version. Provider types are data-driven from CapacityProvider.json. Provider type, provider FQDN, provider version (when applicable), Target Horizon version
Run All Runs all four validations and produces a single combined report All of the above
ℹ️
The tool validates each input as you enter it. After three failed attempts on any required input, the validation is aborted and you must restart.
Pre-Check Validations form set to Active Directory Requirements Validation
Pre-Check form — the fields shown depend on the selected validation type. Here, Active Directory Requirements Validation asks only for the Target Version and the Active Directory FQDN.
Pre-Check Validations form set to Run All with CPA Federation execution mode
Run All in CPA Federation mode — all inputs appear, including the Capacity Provider fields and the Horizon credentials required for LDAP/Run All. Run Validation streams results into the console; View Report opens the generated report.

Execution Modes

Pre-Check can run against the local machine or fan out to other servers. The Execution Mode (top of the form) controls where the checks run:

ModeWhat it does
Local ServerRuns all checks on the machine you launched from. This is the default.
List of Servers (CSV)Runs server/AD/vCenter checks on the remote servers listed in a CSV (over WinRM), then merges the results into a single report.
Local POD ServersDiscovers the Connection Servers in the local POD and validates each of them.
CPA FederationDiscovers every POD in a Cloud Pod Architecture federation (via the global partition) and validates the servers pod-by-pod.

Active Directory Module (RSAT-AD-PowerShell)

The domain-level AD checks (forest/domain functional level, read-write domain controller, DC operating system) use the ActiveDirectory PowerShell module, which needs RSAT-AD-PowerShell and a Kerberos ticket to reach the domain controller's ADWS endpoint.

  • Local mode (interactive): if the module is missing, the tool offers to install it (Yes/No). Choose Yes to install it and continue.
  • Remote / multi-server modes: the domain-level checks run on the orchestrator (the box you launched from, which has direct AD access) and are installed automatically only when you are an administrator; otherwise those specific rows are skipped with a clear message. Remote target servers do not have RSAT — they run only DNS reachability checks.

TLS Certificate Prompt

For LDAP and API validations, Horizon Advisor connects to the Connection Server over HTTPS. If the server uses a self-signed or untrusted certificate, a prompt shows the certificate details:

Untrusted TLS certificate detected for https://<server>/rest/...
Subject   : CN=<server>
Issuer    : CN=<server>
Thumbprint: XXXX...
Valid From: ...   Valid To: ...

Certificate appears to be self-signed.
[1] Accept this certificate for this run only
[2] Reject and stop the request
⚠️
Accepted certificates are never permanently stored. This prompt appears on every new run. Use -AcceptSelfSignedCertificate in non-interactive mode to suppress the prompt in automation.

Understanding Reports

After a validation completes, an HTML report (and PDF if a supported browser is available) is generated automatically.

Summary Section

ItemDescription
Validation TypeThe type of check performed
Target Horizon VersionThe version validated against
Execution TimeWhen the validation ran
Total ChecksTotal number of individual checks performed
PassedPASS Checks that met requirements
WarningsWARN Checks flagged for review
FailedFAIL Checks that did not meet requirements
SkippedSKIP Checks not applicable to this configuration

Detailed Results Table

ColumnDescription
Check KeyThe specific requirement being validated
StatusPASS WARN FAIL SKIP
DetailsThe current detected value or state
RecommendedFor FAIL and WARNING items — the recommended value or corrective action
Always review the Recommended column for any FAIL or WARN item before proceeding with a Horizon installation or upgrade.

Report Location

%ProgramData%\Omnissa\Horizon\logs\HorizonAdvisor\PreCheckReports\
ValidationHTML FilenamePDF Filename
Active DirectoryAD_Precheck_Report.htmlAD_Precheck_Report.pdf
vCentervCenter_Precheck_Report.htmlvCenter_Precheck_Report.pdf
ServerServer_Precheck_Report.htmlServer_Precheck_Report.pdf
LDAPLDAP_Precheck_Report-<timestamp>.htmlLDAP_Precheck_Report-<timestamp>.pdf
Run AllComplete_PreCheck_Report_<timestamp>.htmlComplete_PreCheck_Report_<timestamp>.pdf
ℹ️
If Microsoft Edge or Google Chrome is not installed, the PDF is not generated — but the HTML report is always created regardless.

AD LDS Operations

Maintain your Horizon AD LDS partition and manage related services. Selecting AD LDS Operations from the main menu opens a submenu with three operations:

AD LDS Operations submenu with the operation dropdown
AD LDS Operations submenu — choose an operation (Cleanup, Partition Migration, or ADWS State Management), then click Open.
OptionOperationWhat It Does
1 Clean Up Stale Client User Preference Data Removes pae-Prop objects from the Horizon AD LDS partition that have not been modified within a configurable timeframe (default: 3 months). Helps reclaim space and reduce AD LDS bloat.
2 Partition Migration Operations Orchestrates Local or Global Partition Migration to the new Horizon 2606+ partition layout, including pre-checks, step-by-step execution, and old-partition cleanup. See Partition Migration.
3 ADWS State Management Verify, enable, or disable AD Web Services (ADWS) across the Connection Servers discovered from Horizon LDAP. Unreachable hosts are reported and skipped. See ADWS State Management.

Cleaning Up Stale User Preference Data

This operation allows you to preview and optionally delete stale user preference objects from AD LDS. Here's how it works:

LDAP Cleanup form with count-only and delete modes
LDAP Cleanup — set the staleness threshold in months, choose Count only or Delete stale entries, then Run Cleanup. Progress and the final total stream into the console.
1
Select option 1 from the AD LDS Operations menu.
2
View detected partition

The tool displays the detected Horizon partition location (DN). Review and confirm it's correct by typing 1.

3
Choose your action:

Option 1 — Preview (Recommended First Step)

See how many stale objects exist without deleting anything. This is safe to run at any time to check the cleanup impact. No changes are made to AD LDS.

Option 2 — Delete

Actually delete the stale objects. You'll need to confirm the number of objects to be deleted before proceeding.

4
Set staleness threshold (default: 3 months)

Enter the number of months to use. Any pae-Prop objects not changed within this timeframe are considered stale. Press Enter to use the default of 3 months.

5
Review results

For Preview: You see the total count of stale objects found.

For Delete: Objects are removed in batches, with progress shown on screen. A final total count is displayed when complete.

⚠️
Important Notes:
  • Always run Option 1 (Preview) first to see what will be deleted.
  • AD LDS operations must be run directly on the Horizon Connection Server.
  • Ensure you have an AD LDS backup before deleting user preference data.
  • The deletion operation is permanent — deleted objects cannot be recovered.

Partition Migration

Partition Migration updates your Horizon AD LDS application partition from the legacy naming scheme to the new scheme introduced in recent Horizon releases. It is a guided, step-by-step operation you run directly on a Horizon Connection Server.

Before you begin

  • Upgrade Horizon to 2606 or later before running.
  • If you use Omnissa Access, upgrade the connector so it supports the new partition name.
  • Run during a maintenance window — avoid pool changes, entitlement changes, and desktop/app launches while migration is in progress.
  • Confirm there are no replication issues (check the Horizon Console dashboard).
  • Sign in with a domain user that is a local administrator on the Connection Server and a Horizon Full Administrator.
ℹ️
Full background and requirements are in the Omnissa KB article: https://kb.omnissa.com/s/article/6001593

Using the Partition Migration screen (3 phases)

1
Select the task & sign in

Choose a Task (Local, Global, or Old Partition Cleanup) and enter your Horizon Administrator Username, Domain, and Password, then click Run Pre-checks.

2
Pre-checks run

Results appear in the log area at the bottom. The step buttons stay locked until the pre-checks pass. Changing the Task re-locks the steps so you can't run steps for the wrong task.

3
Run the steps in order

Once pre-checks pass, the step buttons appear — run them top to bottom.

Partition Migration — task selection and credentials
Partition Migration — pick the Task, enter your Horizon Administrator API credentials, and click Run Pre-checks. The yellow banner lists the prerequisites.

The three tasks

TaskWhen to use it
Local Partition MigrationThe standard migration for your POD's local partition. Start here.
Global Partition MigrationOnly when Cloud Pod Architecture (CPA) is enabled, and only after the new local partition is already in use.
Old Partition CleanupRun last, after migration is confirmed, to remove the legacy partition data (requires an explicit confirmation checkbox).

Local Partition Migration steps

Once pre-checks pass for the Local task, the five steps unlock. Run them top to bottom:

Local Partition Migration steps
Local Partition Migration — Steps 1 to 5.
StepWhat it does
1. Validate prerequisites and prepare for migrationRuns the prerequisite checks and, when CPA is enabled, sets up the global partition.
2. Prepare current pod for migration and disable podPrepares the pod and disables the connection servers — you're asked to confirm because this takes the pod offline for brokering.
3. Initiate pod migrationCreates and populates the new local partition (not yet active).
4. Switch pod to Horizon local partitionMakes the new local partition active.
5. Validate and enable current podConfirms the new local partition is in use and re-enables the connection servers.
⚠️
Step 2 takes the pod offline. It disables the connection servers, so run it inside your maintenance window and don't broker new sessions until the migration is complete.

Global Partition Migration steps

Global migration is only for environments with CPA enabled, and only after the local migration is complete and in use. The screen groups the forward-migration steps and the recovery (revert) steps under a distinct Revert heading:

Global Partition Migration steps with the Revert group
Global Partition Migration — the three forward steps, then a separated Revert group (Step 1–2) for the recovery action.
StepWhat it does
1. Initiate global partition migration for the federationMigrates the global partition data.
2. Switch federation to Horizon global partitionMakes the new global partition active.
3. Validate Horizon global partition in useConfirms the new global partition is in use.
Revert (recovery) — run only to undo the global migration; always asks for confirmation first.
1. Revert federation to the old global partitionRolls the federation back to the old global partition.
2. Validate the old global partition is in useConfirms the old global partition is back in use.
🛑
Revert is a recovery action. Only use it to undo the global migration. Any answer other than Yes at the confirmation cancels with no changes.
🛑
Old Partition Cleanup is permanent. It deletes the legacy partition data. Only run it after you are certain the migration completed successfully, and tick the confirmation checkbox to enable it.

ADWS State Management

This operation verifies, enables, or disables AD Web Services (ADWS) across the Connection Servers discovered from Horizon LDAP. ADWS (port 9389) is what the tool's Active Directory checks rely on. Hosts that can't be reached are reported and skipped rather than failing the whole run.

ADWS State Management form with scope options and action buttons
ADWS State Management — choose a Scope (Single pod or CPA Federation), then click Check Status, Enable ADWS, or Disable ADWS. Unreachable hosts are reported and skipped.

Manage Secure Gateway Service

Use this tool to enable or disable the PCoIP Secure Gateway and BLAST Secure Gateway services on your Horizon Connection Server. Secure Gateways allow clients to connect securely from untrusted networks.

Secure Gateway Configuration form
Secure Gateway Configuration — pick an operation (for example, Enable PCoIP Secure Gateway), then click Execute. Run this directly on each Connection Server; the Connection Server service restarts.
OptionAction
1Enable PCoIP Secure Gateway
2Disable PCoIP Secure Gateway
3Enable BLAST Secure Gateway
4Disable BLAST Secure Gateway
5Enable both PCoIP and BLAST Secure Gateway
6Disable both PCoIP and BLAST Secure Gateway
7Exit to main menu

How to Use

1
Select "Manage Secure Gateway" from the main menu (or run directly with -Flow 'Manage Security Gateway').
2
Choose an action from options 1–6 above. The tool validates that you're running on a Horizon Connection Server.
3
Confirm your action when prompted.
4
Review the results — the tool reports success or displays any errors encountered.
ℹ️
What are Secure Gateways?

PCoIP and BLAST are protocols for remote desktop connections. Secure Gateways encrypt these connections when clients connect from outside your trusted network, providing an additional layer of security.

⚠️
This tool must be run directly on the Horizon Connection Server where the gateway services are installed. The tool automatically validates that a Horizon Connection Server installation is present before proceeding.

Automation & Scripting (Command-Line Mode)

For automated runs in scripts, scheduled tasks, or CI/CD pipelines, you can run Horizon Advisor entirely from the command line without any interactive prompts using the -Flow precheck option.

Syntax

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation <type> -TargetHorizonVersion <version> [options]

Parameters

ParameterRequired?Description
-FlowYesFor automated pre-check, must be precheck. Also accepts 'ADLDS Operation' and 'Manage Security Gateway' to open those console menus.
-ValidationYes (precheck)activedirectory, vcenter, server, ldap, capacityprovider, or all
-TargetHorizonVersionYes (except ldap-only)Target Horizon version, e.g. 2606
-ExecutionModeNoLocal (default), Remote, LocalPOD, or CPACluster — controls where checks run
-AdFqdnFor activedirectory / allActive Directory FQDN
-VCenterFqdnFor vcenter / allvCenter FQDN
-VCenterVersionFor vcenter / allvCenter version, e.g. 8.0.2
-CapacityProviderTypeFor capacityproviderProvider type from CapacityProvider.json, e.g. Nutanix_PrismCentral, Amazon_WorkSpaces_Core
-CapacityProviderFqdnFor capacityproviderFQDN of the capacity provider endpoint
-CapacityProviderVersionWhen applicableProvider version (omit for providers that have no version check)
-HorizonAdminUsernameFor ldap / allHorizon Administrator username
-HorizonDomainFor ldap / allHorizon domain
-HorizonAdminPasswordFor ldap / all (automated)Horizon Administrator password as a SecureString. If omitted, the password is securely prompted at runtime.
-AcceptSelfSignedCertificateNoSuppresses the TLS certificate prompt — accepted without user interaction
-HelpNoDisplays command-line help and examples

Examples

Server validation:

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation server -TargetHorizonVersion '2503'

Active Directory validation:

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation activedirectory `
    -AdFqdn 'dc.corp.example.com' -TargetHorizonVersion '2503'

vCenter validation:

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation vcenter `
    -VCenterFqdn 'vcenter.corp.example.com' -VCenterVersion '8.0.2' -TargetHorizonVersion '2503'

LDAP validation — password prompted securely at runtime:

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation ldap `
    -HorizonAdminUsername 'admin' -HorizonDomain 'corp'

LDAP validation — accept self-signed certificate without prompt:

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation ldap `
    -HorizonAdminUsername 'admin' -HorizonDomain 'corp' -AcceptSelfSignedCertificate

Run all validations:

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation all `
    -AdFqdn 'dc.corp.example.com' `
    -VCenterFqdn 'vcenter.corp.example.com' -VCenterVersion '8.0.2' `
    -TargetHorizonVersion '2503' `
    -HorizonAdminUsername 'admin' -HorizonDomain 'corp'

Capacity Provider validation (Nutanix Prism Central):

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation capacityprovider `
    -CapacityProviderType 'Nutanix_PrismCentral' -CapacityProviderFqdn 'prism.corp.example.com' `
    -CapacityProviderVersion 'pc.7.5' -TargetHorizonVersion '2606'

Run all validations against remote servers (over WinRM):

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation all -ExecutionMode Remote `
    -AdFqdn 'dc.corp.example.com' `
    -VCenterFqdn 'vcenter.corp.example.com' -VCenterVersion '8.0.2' `
    -TargetHorizonVersion '2606' `
    -HorizonAdminUsername 'admin' -HorizonDomain 'corp'

Open AD LDS Operations menu:

.\Start-HorizonAdvisor.ps1 -Flow 'ADLDS Operation'

Open Secure Gateway Manager menu:

.\Start-HorizonAdvisor.ps1 -Flow 'Manage Security Gateway'

Password Handling for Scheduled/Automated Tasks

When running Horizon Advisor automatically (in a scheduled task or CI/CD pipeline), you usually can't provide an interactive password prompt. Use the -HorizonAdminPassword parameter with a PowerShell SecureString to automate password entry.

⚠️
Security Best Practice: Never hardcode passwords in scripts as plain text. Always convert them to SecureString objects using your organization's credential management solution (e.g., password vault, secrets manager, Azure Key Vault, etc.).

Example: If you have a SecureString stored in a variable called $securePassword, run:

.\Start-HorizonAdvisor.ps1 -Flow precheck -Validation ldap `
    -HorizonAdminUsername 'admin' -HorizonDomain 'corp' `
    -HorizonAdminPassword $securePassword
ℹ️
Horizon Advisor never logs, displays, or stores credential values. Passwords are only used to authenticate with the Horizon server for validation.

Getting Help & Troubleshooting

Getting Command-Line Help

To see all available command-line options, parameters, and examples directly from PowerShell:

.\Start-HorizonAdvisor.ps1 -Help

Where to Find Logs and Reports

When Horizon Advisor runs, it creates detailed logs and saves reports to:

%ProgramData%\Omnissa\Horizon\logs\HorizonAdvisor\

This folder contains:

  • PreCheckReports/ — HTML and PDF validation reports
  • Logs/ — Operation logs and debug information
ℹ️
Troubleshooting Tip: If something doesn't work as expected, check the logs in the above folder first. They often contain detailed error messages and helpful context.

Common Issues

❌ "Horizon Connection Server installation not detected"

You're trying to run AD LDS or Secure Gateway operations on a non-Connection Server machine. These tools must be run directly on the Connection Server.

❌ "Certificate verification failed" during LDAP validation

The Connection Server is using a self-signed or untrusted certificate. This is normal in lab/test environments. When prompted, select option [1] Accept this certificate. To suppress the prompt in automated runs, use the -AcceptSelfSignedCertificate flag.

❌ "Access denied" or permission errors

Horizon Advisor requires administrative privileges on the local machine. Run PowerShell as Administrator and try again.

❌ PowerShell execution policy blocks the script

If you see a "cannot be loaded because running scripts is disabled" error, run this command in PowerShell (as Administrator):

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Questions or Issues?

For additional help:

  • Consult the logs in %ProgramData%\Omnissa\Horizon\logs\HorizonAdvisor\
  • Review the -Help output for command-line usage
  • Check the Omnissa documentation or support resources