ControlUp’s New HDX Simulator SBA

CitrixCitrix HDXScript Actions

ControlUp exposes a new Script Based Action (SBA) which lays the groundwork for our brand new HDX simulator. This script allows sysadmins to initiate HDX connections to XenApp servers and get back a report about the status of those servers (connection established successfully, or, in case of failure it includes the specific error code that led to this failure).

HDX stands for “High-Definition eXperience” and is built on top of Citrix’s ICA remoting protocol. Through our SBA technology, ControlUp allows sysadmins to write and download PowerShell, VBS and even regular command line batch files. ControlUp’s SBA inventory consists of scores of available scripts and all these scripts are included in ControlUp’s basic license.

Often times basic VM-level metrics for XenApp servers don’t tell the whole story. A XenApp server can be up and running, while not responding to ICA connections. Here are some examples for reasons to check up your server’s responsiveness with our HDX simulator script:

  1. When receiving a common error, like a Black Hole – this syndrome happens when a fresh XenApp server goes online while a logon storm happens in a load-balanced environment.
  2. During daily/weekly health checks to prevent users from logging into unresponsive servers. XenApp servers often continue to be “available” in terms of load evaluators, despite being unresponsive.
  3. Before elevating new servers to production environments.

ControlUp’s HDX simulator SBA allows sysadmins to quickly test XenApp farm connectivity status and receive a detailed error code if there is indeed a connectivity issue.

The script outputs the XenApp farm’s current status from an ICA responsive aspect. It shows results whether the session accessed or not and if not, the script reveals why it failed.

Executing ICA Actions:

All you have to do in order to use ICA actions in PowerShell is to use the ICA library that comes out-of-the-box on any ICA regular installation. Just load WfIcaLib.dll to PowerShell and then you’re good to go. Refer to Citrix’s documentation to find out which actions are available to you.

Like any ICA script, this HDX simulator SBA essentially loads the DLL before it starts to use ICA commands. After the script loads the DLL, it creates a new ICA object which basically has all ICA-related parameters – anything from the color bitness, through audio mapping, to windows resolution, etc. The script launches an ICA connection after it finishes initializing the ICA object. Once the session is launched, the original ICA object we created will hold an error message in the method: $ICA.GetLastError(). This error message will stay there until the object initializes again.

The list of errors this script can output is long and is available on page 300 of the ICA Object Guide. The most common errors we observed were:

  1. “Error connecting to server”: meaning the ICA service is not available on the target server.
  2. “Client is already connected”: when users are trying to access a published app which has exceeded its instance limit.
  3. “No memory available”: the session we tried to initiate failed when we performed a LoginVSI load test and the server’s memory was fully loaded.

Again, here too, the list goes on and on. There are more than 130 error codes that could cause an ICA session to fail. ControlUp is able to find the error within a few seconds using our SBA technology and grouping method. The SBA mechanism divides outputs from each and every server into groups, according to output content:

This helps administrators find the gaps and get a list of the servers with the errors for remediation.