Src/Private/Get-AbrHRZGlobalEntitlement.ps1
function Get-AbrHRZGlobalEntitlement { <# .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 "Global Entitlements InfoLevel set at $($InfoLevel.Inventory.GlobalEntitlements)." Write-PScriboMessage "Collecting Global Entitlements information." } process { try { if ($GlobalEntitlements) { if ($InfoLevel.Inventory.GlobalEntitlements -ge 1) { Section -Style Heading3 "Global Entitlements" { Paragraph "The following section details the Global Entitlements configuration for $($HVEnvironment.toUpper()) server." BlankLine $GlobalEntitlements | ForEach-Object { $_ | Add-Member -MemberType NoteProperty -Name "GE_Type" -Value "Desktop" } $GlobalApplicationEntitlementGroups | ForEach-Object { $_ | Add-Member -MemberType NoteProperty -Name "GE_Type" -Value "Application" } $GlobalEntitlementJoined = @() $GlobalEntitlementJoined += $GlobalEntitlements $GlobalEntitlementJoined += $GlobalApplicationEntitlementGroups $OutObj = @() foreach ($GlobalEntitlement in $GlobalEntitlementJoined) { Write-PScriboMessage "Discovered Global Entitlements Information." $GlobalEntitlementPodCount = ($GlobalEntitlement.data.memberpods.id).count if ($GlobalEntitlement.Data.LocalApplicationCount) { $Type = 'Application' } elseif ($GlobalEntitlement.Data.LocalDesktopCount) { $Type = 'Desktop' } $inObj = [ordered] @{ 'Name' = $GlobalEntitlement.base.DisplayName 'Type' = $Type 'Number of Pods' = $GlobalEntitlementPodCount } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) } $TableParams = @{ Name = "Global Entitlements - $($HVEnvironment.toUpper())" List = $false ColumnWidths = 34, 33, 33 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Sort-Object -Property 'Name' | Table @TableParams Section -Style Heading4 "Global Entitlement Summary Details" { foreach ($GlobalEntitlement in $GlobalEntitlementJoined) { Write-PScriboMessage "Discovered Global Entitlements Detailed Information for $($GlobalEntitlement.base.DisplayName)." try { if ($InfoLevel.Inventory.GlobalEntitlements -ge 2) { Section -Style NOTOCHeading5 "Summary - $($GlobalEntitlement.base.DisplayName)" { $SupportedDisplayProtocolsresult = '' $SupportedDisplayProtocols = $GlobalEntitlement.base | ForEach-Object { $_.SupportedDisplayProtocols } $SupportedDisplayProtocolsresult = $SupportedDisplayProtocols -join ', ' if ($GlobalEntitlement.Data.LocalApplicationCount) { $Type = 'Application' } elseif ($GlobalEntitlement.Data.LocalDesktopCount) { $Type = 'Desktop' } $GlobalAccessGroupID = $($hzServices.GlobalAccessGroup.GlobalAccessGroup_Get($GlobalEntitlement.base.GlobalAccessGroupId).base.Name) $OutObj = @() Write-PScriboMessage "Discovered Global Entitlement Data for $HVEnvironment" $inObj = [ordered] @{ 'Display Name' = $GlobalEntitlement.base.DisplayName 'Alias Name' = $GlobalEntitlement.base.AliasName 'Description' = $GlobalEntitlement.base.DisplayName.description 'Scope' = $GlobalEntitlement.base.Scope 'From Home Site' = $GlobalEntitlement.base.FromHome 'Require Home Site' = $GlobalEntitlement.base.RequireHomeSite 'Multiple Session Auto Clean' = $GlobalEntitlement.base.MultipleSessionAutoClean 'Enabled' = $GlobalEntitlement.base.Enabled 'Supported Display Protocols' = $SupportedDisplayProtocolsresult 'Default Display Protocol' = $GlobalEntitlement.base.DefaultDisplayProtocol 'Allow Users to Choose Display Protocol' = $GlobalEntitlement.base.AllowUsersToChooseProtocol 'Allow User to Reset Machines' = $GlobalEntitlement.base.AllowUsersToResetMachines 'Enable HTML Access' = $GlobalEntitlement.base.EnableHTMLAccess 'Allow Multiple Sessions Per User' = $GlobalEntitlement.base.AllowMultipleSessionsPerUser 'Enable Pre-Launch' = $GlobalEntitlement.base.EnablePreLaunch 'Connection Server Restrictions' = $GlobalEntitlement.base.ConnectionServerRestrictions 'Enable Prelaunch' = $GlobalEntitlement.base.EnablePreLaunch 'Category Folder Name' = $GlobalEntitlement.base.CategoryFolderName 'Client Restrictions' = $GlobalEntitlement.base.ClientRestrictions 'Enable Collaboration' = $GlobalEntitlement.base.EnableCollaboration 'Shortcut Locations' = $($GlobalEntitlement.base.ShortcutLocations -join ', ') 'Multisession Mode' = $GlobalEntitlement.base.MultiSessionMode 'Backup GAE' = $GlobalEntitlement.base.BackupGAE 'Display Assigned Machine Name' = $GlobalEntitlement.base.DisplayAssignedMachineName 'Display Machine Alias' = $GlobalEntitlement.base.DisplayMachineAlias 'Global Access Group ID' = $GlobalAccessGroupID } $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) if ($Type -eq 'Desktop') { $inObj.Remove('Enable Pre-Launch') $inObj.Remove('Multi Session Mode') } if ($Type -eq 'Application') { $inObj.Remove('Allow User to Reset Machines') $inObj.Remove('Allow Multiple Sessions Per User') $inObj.Remove('Enable Collaboration') $inObj.Remove('Display Assigned Machine Name') $inObj.Remove('Display Machine Alias') } $TableParams = @{ Name = "Detailed Information - $($GlobalEntitlement.base.DisplayName)" List = $true ColumnWidths = 50, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } try { $OutObj = @() Section -Style NOTOCHeading6 "Local Pools - $($GlobalEntitlement.base.DisplayName)" { try { Write-PScriboMessage "Discovered Local Pools Information for $($HVEnvironment.toUpper())." $GEPodMembers = $GlobalEntitlement.data.MemberPods.id $PodSiteID = ('') Foreach ($GEPodMember in $GEPodMembers) { Foreach ($CPSite in $CloudPodLists) { If ($CPSite.id.id -eq $GEPodMember) { $PodSiteID += $CPSite.DisplayName } } } $PodMembers = '' $PodMembers = ForEach-Object { $PodSiteID } $PodMemberList = $PodMembers -join ', ' $inObj = [ordered] @{ 'Local Desktop Count' = $GlobalEntitlement.data.LocalDesktopCount 'Local Application Count' = $GlobalEntitlement.data.LocalApplicationCount 'Remote Desktop Count' = $GlobalEntitlement.data.RemoteDesktopCount 'Remote Application Count' = $GlobalEntitlement.data.RemoteApplicationCount 'User Count' = $GlobalEntitlement.data.UserCount 'User or Group Count' = $GlobalEntitlement.data.UserGroupCount 'User or Group Site Override Count' = $GlobalEntitlement.data.UserGroupSiteOverrideCount 'Member Pods' = $PodMemberList } $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) if ($Type -eq 'Application') { $inObj.Remove('Local Desktop Count') $inObj.Remove('Remote Desktop Count') } if ($Type -eq 'Desktop') { $inObj.Remove('Local Application Count') $inObj.Remove('Remote Application Count') } $TableParams = @{ Name = "Local Pools - $($HVEnvironment.toUpper())" List = $true ColumnWidths = 30, 70 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } } } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } # Users and Groups try { Section -Style NOTOCHeading6 "Users and Groups - $($GlobalEntitlement.base.DisplayName)" { $OutObj = @() try { Write-PScriboMessage "Discovered Users and Groups - $($GlobalEntitlement.base.DisplayName)." foreach ($EntitledUserOrGroupGlobal in $EntitledUserOrGroupGlobals) { Switch ($EntitledUserOrGroupGlobal.base.Group) { 'True' { $GlobalEntitledGroup = 'Group' } 'False' { $GlobalEntitledGroup = 'User' } } $EntitledDefined = @() foreach ($GE in $($EntitledUserOrGroupGlobal.GlobalData.GlobalEntitlements.id -split [Environment]::NewLine)) { if ($GlobalEntitlement.Id.id -eq $GE) { $EntitledDefined += $EntitledUserOrGroupGlobal } } foreach ($GEA in $($EntitledUserOrGroupGlobal.GlobalData.GlobalApplicationEntitlements.id -split [Environment]::NewLine)) { if ($GlobalEntitlement.Id.id -eq $GEA) { $EntitledDefined += $EntitledUserOrGroupGlobal } } foreach ($ED in $EntitledDefined) { $inObj = [ordered] @{ 'Name' = $ED.Base.Name 'User or Group' = $GlobalEntitledGroup 'Domain' = $ED.Base.Domain } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) } } # End If Group or User } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } $TableParams = @{ Name = "Users and Groups - $($GlobalEntitlement.base.DisplayName)" List = $false ColumnWidths = 40, 30, 30 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } } } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } } } } } } } catch { Write-PScriboMessage -IsWarning $_.Exception.Message } } end {} } |