Src/Private/Get-AbrHRZApplicationPool.ps1

function Get-AbrHRZApplicationPool {
    <#
    .SYNOPSIS
        PowerShell script which documents the configuration of VMware Horizon in Word/HTML/XML/Text formats
    .DESCRIPTION
        Documents the configuration of VMware Horizon in Word/HTML/XML/Text formats using PScribo.
    .NOTES
        Version: 1.1.4
        Author: Chris Hildebrandt, Karl Newick
        Twitter: @childebrandt42, @karlnewick
        Editor: Jonathan Colon, @jcolonfzenpr
        Twitter: @asbuiltreport
        Github: AsBuiltReport
        Credits: Iain Brighton (@iainbrighton) - PScribo module
 
 
    .LINK
        https://github.com/AsBuiltReport/AsBuiltReport.VMware.Horizon
    #>


    [CmdletBinding()]
    param (
    )

    begin {
        Write-PScriboMessage "Applications InfoLevel set at $($InfoLevel.Inventory.Applications)."
        Write-PScriboMessage "Collecting Applications information."
    }

    process {
        try {
            if ($Apps) {
                if ($InfoLevel.Inventory.Applications -ge 1) {
                    Section -Style Heading3 "Application Pool" {
                        Paragraph "The following section details the configuration of Application Pool for $($HVEnvironment.toUpper()) server."
                        BlankLine
                        $OutObj = @()
                        foreach ($App in $Apps) {
                            Write-PScriboMessage "Discovered Applications Information for $($App.Data.DisplayName)."
                            $inObj = [ordered] @{
                                'Name' = $App.Data.DisplayName
                                'Version' = $App.ExecutionData.Version
                                'Enabled' = $App.Data.Enabled
                            }

                            $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj)
                        }

                        $TableParams = @{
                            Name = "Applications - $($HVEnvironment.toUpper())"
                            List = $false
                            ColumnWidths = 34, 33, 33
                        }

                        if ($Report.ShowTableCaptions) {
                            $TableParams['Caption'] = "- $($TableParams.Name)"
                        }
                        $OutObj | Sort-Object -Property 'Name' | Table @TableParams
                        try {
                            if ($InfoLevel.Inventory.Applications -ge 2) {
                                Section -Style Heading4 "Application Pool Details" {
                                    foreach ($App in $Apps) {
                                        # Find out Farm Name for Applications
                                        $farmMatch = $false
                                        foreach ($farm in $farms) {
                                            if ($farm.Id.id -eq $app.executiondata.farm.id) {
                                                $ApplicationFarmName = $farm.data.name
                                                $farmMatch = $true
                                            }
                                            if ($farmMatch) {
                                                break
                                            }
                                        }
                                        # Find out Access Group for Applications
                                        $AccessgroupMatch = $false
                                        foreach ($Accessgroup in $Accessgroups) {
                                            if ($Accessgroup.Id.id -eq $app.accessgroup.id) {
                                                $AccessGroupName = $Accessgroup.base.name
                                                $AccessgroupMatch = $true
                                            }
                                            if ($AccessgroupMatch) {
                                                break
                                            }
                                        }
                                        # Find out Global Application Entitlement Group for Applications
                                        $GlobalApplicationEntitlementGroupDisplayName = ('')
                                        $GlobalApplicationEntitlementGroupMatch = $false
                                        foreach ($GlobalApplicationEntitlementGroup in $GlobalApplicationEntitlementGroups) {
                                            if ($GlobalApplicationEntitlementGroup.Id.id -eq $app.data.GlobalApplicationEntitlement.id) {
                                                $GlobalApplicationEntitlementGroupDisplayName = $GlobalApplicationEntitlementGroup.base.DisplayName
                                                $GlobalApplicationEntitlementGroupMatch = $true
                                            } else {
                                                $GlobalApplicationEntitlementGroupDisplayName = "No Global Application Entitlement"
                                            }
                                            if ($GlobalApplicationEntitlementGroupMatch) {
                                                break
                                            }
                                        }
                                        If ([string]::IsNullOrEmpty($App.Data.AvApplicationPackageGuid)) {

                                            $AppVolumesApp = "False"
                                        } else {
                                            $AppVolumesApp = "True"
                                        }
                                        $ApplicationFileTypes = $App.ExecutionData.FileTypes | ForEach-Object { $_.FileType }
                                        $ApplicationFileTypesresult = $ApplicationFileTypes -join ', '
                                        $OtherApplicationFileTypes = $App.ExecutionData.OtherFileTypes | ForEach-Object { $_.FileType }
                                        $OtherApplicationFileTypesresult = $OtherApplicationFileTypes -join ', '

                                        Section -Style NOTOCHeading5 "Application Summary - $($App.Data.DisplayName)" {
                                            $OutObj = @()
                                            Write-PScriboMessage "Discovered $($App.Data.DisplayName) Applications Information."
                                            $inObj = [ordered] @{
                                                'Display Name' = $App.Data.DisplayName
                                                'Description' = $App.Data.Description
                                                'Enabled' = $App.Data.Enabled
                                                'Global Application Entitlement' = $GlobalApplicationEntitlementGroupDisplayName
                                                'Enable Anti Affinity Rules' = $App.Data.EnableAntiAffinityRules
                                                'Anti-Affinity Patterns' = $App.Data.AntiAffinityPatterns
                                                'Anti-Affinity Count' = $App.Data.AntiAffinityCount
                                                'Enable Pre-Launch' = $App.Data.EnablePreLaunch
                                                'Connection Server Restrictions' = $App.Data.ConnectionServerRestrictions
                                                'Category Folder' = $App.Data.CategoryFolder
                                                'Client Restrictions' = $App.Data.ClientRestrictions
                                                'Shortcut Location' = $App.Data.ShortcutLocation
                                                'Multi Session Mode' = $App.Data.MultiSessionMode
                                                'Max Multi Sessions' = $App.Data.MaxMultiSessions
                                                'Cloud Brokered' = $App.Data.CloudBrokered
                                                'App Volumes App' = $AppVolumesApp
                                                'App Volumes Package' = $App.Data.AvApplicationPackageGuid
                                                'Executable Path' = $App.ExecutionData.ExecutablePath
                                                'Version' = $App.ExecutionData.Version
                                                'Publisher' = $App.ExecutionData.Publisher
                                                'Start Folder' = $App.ExecutionData.StartFolder
                                                'Argument' = $App.ExecutionData.Args
                                                'Farm' = $ApplicationFarmName
                                                'File Types' = $ApplicationFileTypesresult
                                                'Auto Update File Types' = $App.ExecutionData.AutoUpdateFileTypes
                                                'Other File Types' = $OtherApplicationFileTypesresult
                                                'Auto Update Other File Types' = $App.ExecutionData.AutoUpdateFileTypes
                                                'Access Group' = $AccessGroupName
                                            }

                                            $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj)

                                            $TableParams = @{
                                                Name = "Application Summary - $($App.Data.DisplayName)"
                                                List = $true
                                                ColumnWidths = 50, 50
                                            }

                                            if ($Report.ShowTableCaptions) {
                                                $TableParams['Caption'] = "- $($TableParams.Name)"
                                            }
                                            $OutObj | Table @TableParams
                                        }
                                    }
                                }
                            }
                        } catch {
                            Write-PScriboMessage -IsWarning $_.Exception.Message
                        }
                    }
                }
            }
        } catch {
            Write-PScriboMessage -IsWarning $_.Exception.Message
        }
    }
    end {}
}