Sometimes it is handy to list all of the associations between Horizon Application Pools to Global Entitlements. Here is a quick function I wrote to do so! Introducing Get-HVAppsToGEs.

You must first install the HVHelper Modules with PowerCLI, as well as a really cool module called Join-Object for performing SQL-like joins within two PowerShell arrays. This is required because the relationship is based on the Global Entitlement ID, but we want to translate this to the readable name.

 # Get apps to Global Entitlement associations. Requires Join-Object module and HVHelper module from PowerCLI.
# Run "Install-Module -Name Join-Object -RequiredVersion 2.0.1" for join-object module install.
# Connect to pod using Connect-HVServer prior to execution. 
# Function written by Nick Burton -

Function Get-HVAppsToGEs {

# Get app info

$hvapps = Get-HVApplication

foreach ($hvapp in $hvapps)

$appInfo+= New-Object PSObject -Property @{
"AppName" = $hvapp.Data.Name;
"AssignedGE" = $hvapp.Data.GlobalApplicationEntitlement.Id;

# Get global entitlement info

$hvGEs = Get-HVGlobalEntitlement
$GEInfo = @()

foreach ($HVGE in $HVGEs)

$GEInfo+= New-Object PSObject -Property @{
"Name" = $HVGE.Base.DisplayName;
"GEID" = $HVGE.Id.Id;

$JoinParams = @{
    Left              = $appInfo
    Right             = $GEInfo
    LeftJoinProperty  = 'AssignedGE'
    RightJoinProperty = 'GEID'
    Type              = 'OnlyIfInBoth'
    Prefix            = 'GE_'
Join-Object @JoinParams | select AppName,GE_Name

Here’s what the result looks like:

Enjoy! I’ll likely follow this up with a Desktop Pool-to-GE script later.

UPDATE: As promised, here is the desktop pool-to-GE version.