Currently, in my XenApp environment, we maintain nearly 300 published applications and desktops. We also are adding 2 or 3 new applications a month. Managing this many resources is cumbersome especially when you rely on Session Sharing. Session Sharing is described in the Citrix knowledge base article CTX159159 and basically causes all application launches to occur on the same XenApp server or within the same user session. This provides a better experience for the user (since he does not have to wait for a new login to complete for every new application launched), in user management (since a user’s session is only on one XenApp server) and in user profile stability (since the user isn’t logged into multiple servers).
The main requirement for Session Sharing is to have the same application installed on all your servers. The secondary requirements are less obvious, but listed in CTX159159.
- Color depth
- Screen Size
- Access Control Filters (for SmartAccess)
- Drive Mapping
- Printer Mapping
The issue then becomes how does one review all their applications to determine that the above settings are consistent. Pouring over the application properties in the AMC is a recipe for insanity (in my opinion). In this post, will explore a couple of ways to ensure your applications settings are consistent.
With this tool you can apply a variety of application properties to as many or as few applications as you want, but this tool will not report on the current settings of your applications. Also, this tool does not address Access Control Filters, Drive Mapping, or Printer Mapping. So how do you gather this information?
PowerShell to the rescue
Citrix has fully embraced PowerShell (thankfully) with the development of Workflow Studio (version 2.0 was released this week). At Synergy 2009, they also released a tech preview for a variety of XenApp PowerShell cmdlets (download the preview from this page). These commands, while simple are very powerful and we can utilize one of them to output all the important settings necessary for consistent Session Sharing (see Brandon Shell’s excellent site about PowerShell and his post about these commands).
The following cmdlet will display all the application properties we need to check.
PS PoSh:\> get-help Get-XAApplicationReport NAME Get-XAApplicationReport SYNOPSIS Gets detailed information for published applications. SYNTAX Get-XAApplicationReport [-BrowserName] <String> [-WhatIf] [-Confirm] [<CommonParameters>] Get-XAApplicationReport -InputObject <XAApplication> [-WhatIf] [-Confirm] [<CommonParameters>] DETAILED DESCRIPTION This cmdlet gets detailed information for published applications, including associations, such as servers, accounts, file types and icons. RELATED LINKS Get-XAApplication REMARKS For more information, type: "get-help Get-XAApplicationReport -detailed". For technical information, type: "get-help Get-XAApplicationReport -full".
This command displays many properties, but to display the ones we are interested in for session sharing we’ll use the following command:
Get-XAApplicationReport * | select DisplayName, WindowType, ColorDepth, ConnectionsThroughAccessGatewayAllowed, OtherConnectionsAllowed, AccessSessionConditionsEnabled, AudioType, AudioRequired, SslConnectionEnabled, EncryptionLevel, EncryptionRequired, WaitOnPrinterCreation
Piping this command to format-table -wrap will ensure that all the data will display. After this, you can output to a text or spreadsheet file and compare all the properties to make sure they are consistent.