Downloading Citrix App Layering (Unidesk)


About a week ago (April 3, 2017), Citrix released App Layering 4.1.0. This is the slightly rebranded Unidesk and Citrix is emphasizing (over-emphasizing based on some comments) that it…

Achieves app compatibility greater than 99.5%

I find it interesting that out of the gate, Citrix is positioning App Layering as a direct competitor/replacement for Microsoft App-V, which I believe has more success supporting many different types of applications (this is based on my years of experience with App-V and minutes spent with Unidesk 🙂 ). I always viewed Unidesk as a more comprehensive approach to delivering a fully realized, layered solution. But let’s face it, most Citrix administrators/engineers have to become application analysts/re-packagers/engineers in order to make applications work in a Citrix deployment. This blog will not dive into using App Layering, but instead will try and shine some light on actually downloading this “new” product from Citrix


Note: The following is based on discussions with our Citrix sales engineer and the Unidesk website
  • You must be active on Select Service to use it.
  • You must have platinum licensing if you wish to run App Layering on-premises.
  • You must have a one of the following hypervisors
    • Citrix XenServer (6.5, 7.0, 7.1)
    • Microsoft Azure
    • Microsoft Hyper-V (at least 2012 R2)
    • Nutanix Acropolis
    • VMware VSphere (5.5.x, 6.0.x, 6.5.x)
  • SMB Network File Share Protocol
  • A network connection of 10GB between the Layering appliance and the file share
  • One of the following publishing platforms
    • Citrix MCS for Nutanix AHV
    • Citrix MCS for vSphere
    • Citrix MCS for XenServer
    • Citrix PVS 7.1, 7.6 – 7.9, 7.11 – 7.12 with recommended network speeds to the PVS Store of 10 GB.
    • Citrix XenApp and XenDesktop 6.5, 7.0 – 7.12
    • Microsoft Azure, with recommended network speeds to the Azure publishing location of 10 GB.
    • VMware Horizon View 6.x, 7.0.x (Note: View Persona Management is not supported with Elastic Layering)
  • A Citrix Cloud Account

How to Download

Login into your Citrix Cloud Account

Go down to Available Services and click Request Trial on App Layering

Once you receive an email from Citrix Cloud, log back into your account. Find App Layering and click Manage

On the App Layering screen, click Get Started
Install the Cloud Connector (This will be required if you do not have local resources to run the appliance).

Note: Installing the Cloud Connector will affect your existing Citrix Studio install. You will have to uninstall the Cloud Connector and Studio and then reinstall Studio if you installed the Connector accidentally or just to try it out.


Download the appliance

Install and Configure the Appliance

That’s all for now

I won’t cover the install and configuration of the appliance at this time. Hopefully, this helps shed some light on actually downloading the appliance. If you do not have Platinum Citrix licensing or Select, you can still download a trial from the Unidesk web site.

Thanks for reading,

PowerShell: Friday Script Blitz



In my current position I’m getting to do a lot of PowerShell scripting. Typically these are quick scripts for maintenance or finding information about our Citrix environment. I’m posting several here to share.

NOTE: These scripts were written against a XenApp 6.5 environment.


Lists active published applications’ command lines and working directories based on a search word.


Get it from GitHub.


Lists active published applications from a designated XA 6.x Worker Group


Get it from GitHub


Displays total, active, and disconnected sessions from a XA 6.x farm


Get it from GitHub

Happy Friday!

PowerShell: Drain users from a XenApp Server



Citrix has provided XenApp administrators several tools to control server access. Applying load evaluators and login modes allows us to establish reboot and maintenance schedules. At times, however getting users off a server becomes urgent. In this post we’ll cover a script designed to automatically drain users off a XenApp server with different levels of “aggression”.


Your ever-intrepid security team informs you that a user on one of your Citrix servers went to a malicious web site. While everyone is reasonably sure that the web security filters prevented anything bad from happening, you err on the side of caution and implement a standard procedure to remove the system from production, perform a security scan, get the connected users off, and reboot the server (because you’ve naturally implemented PVS and rebooting will remove any changes that have occurred since the image was last sealed). Depending on your idle and disconnection policies, this could take a while. If only there was a way to get users off a system in a timely manner without inconveniencing them too much. Oh wait…PowerShell

Why So Aggressive?

The purpose of the drain-xaserver script is to look for disconnected ICA sessions and log them off your server. But what if your users are busy working away or if you have liberal idle session timeouts? Well, in order to add some urgency to this script, I included a switch parameter that determines how long a session can be idle before it is disconnected and then logged off.

If you choose Green (the default value), then your normal idle timeouts will occur. If you choose Yellow, the idle timeout gets reduced to 30 minutes. If you choose Red, the idle timeout is further reduced to 15 minutes. You can, of course, modify these settings to be longer or shorter. Just to be clear, these settings will override your Farm-wide idle session timeouts on the server you run this script against only while the script is running.

This script checks that a compatible Logon Mode was assigned to the server before sessions get logged off. In this case, the following Logon Modes will allow the script to proceed:

  • ProhibitLogOns
  • ProhibitNewLogOns
  • ProhibitNewLogOnsUntilRestart

Otherwise, the script will not run.

While True…Do Stuff

The script checks the number of ICA sessions and as long as it isn’t zero, keeps checking every 10 minutes (adjust for your environment) for new disconnected sessions. If you have set a Red or Yellow aggression level, line 15 (above) shows how the script calculates the user’s idle time. The LastInputTime value comes from running Get-XASession with the “-full” switch. This queries Citrix for session details that are usually omitted when using Get-XASession.

The Script

I went through a lot of revisions while testing, so please let me know if you run into any issues using this script in a XenApp 6.x environment. You can get the script from GitHub.

Thanks for reading,

%d bloggers like this: