For a while now I have been a huge advocate of the logon optimisation work that George Spiers has provided, and I have been testing and implementing the majority of these optimisations on the projects I am involved with. Its led a to a passion (obsession) around reducing logon times and optimising the user experience, and the results have been telling. Technologies like Citrix Workspace Environment Manager, combined with many other small optimisations completely change what an out of the box Citrix Deployment looks and performs like
You can read more about Georges work here: http://www.jgspiers.com/
One existing annoyance that I have, is that the first logon for a user in most environments is still slow despite the many optimisations that we can put in place. Sure, there are some options around auto logons (interactive logons) or even scripted RDP Logons, to try and knock out first user logon slowness, but none of these do the same job as launching a pure ICA/HDX based XenApp Session. I have found that the first session of the day, on average can take anywhere between 15-30 seconds longer than the rest depending on the environment. Would be nice if we could remove this…
Enter Control Up Logon Simulator

A little while back, the good people at ControlUp released a free logon simulator which can be used to test end to end connectivity to a Citrix environment. Furthermore, they made it possible for it to be command line driven using an xml launch file…perfect…A little PowerShell later, and I was able to create a tool that does exactly what I need
The logic and use of the tool is as follows
–> Identify a launch machine
This machine can be as simple as a windows 10 Virtual machine. It’s doesn’t need to be anything special. Its role is to do nothing but drive Control Up Logon Simulator to launch sessions against the Citrix Environment.
If you have hundreds of VDAs, you may find it makes sense to have multiple Launch Machines
The launch machine will require Citrix Receiver installed
–> Create an Active Directory User Account to drive the solution
The entire solution can work off a single Active Directory User Account. I refer to this as the Launch Account. Its job is as follows
- Auto Logon to the Launch Machine(s)
- Have access to any published resource you want to launch via Control Up
–> Utilise Martin Zugec’s XA-CreateDesktopsForVDAs PowerShell Script.
This is one of the most useful scripts around the place. It simply creates a published desktop for every server capable of shared hosted sessions within your Citrix Environment and ties resource to server via the use of tags. It names them the same as the actual Server Name by default, and assigns an Active Directory Group. Perfect for us when all we want to do is launch an ICA/HDX session against each server
https://www.citrix.com/blogs/2017/04/17/how-to-assign-desktops-to-specific-servers-in-xenapp-7/
It makes sense to use the Active Directory Launch Account nested into an Active Directory Group, so create a group and nest your Active Directory Launch Account into it.
–> Download and Install Control Up Logon Simulator
This is currently a free tool released by Control Up located here:
https://www.controlup.com/products/logon-simulator/

–> Download and Install SysInternals Auto Logon to provide an auto logon for the AD Action account
Download and Install this on the Launch Machine(s). Configure with the Launch Account so that on every reboot, the machine Auto Logs in with your Launch Account, runs a scheduled task to launch the script (which locks the session) and away we go
https://docs.microsoft.com/en-us/sysinternals/downloads/autologon
–> Create a scheduled Task with Multiple Triggers
Launching the script via a scheduled task allows complete flexibility for the environment. We obviously need multiple triggers as a base, one to cater for a machine start-up or reboot, the other to ensure daily repetitions of the warm up tasks, however you may find different triggers that you want to implement depending on your environment
Note in the process below, I have enabled Port testing against 1494 on each VDA prior to launch, to ensure we aren’t wasting valuable time attempting to launch resources against a down server. Full logging is enabled so you can track through all requests



The code for this as always, is open and available on my github page, along with any other tools and scripts I have and will develop.
Very nice write-up James! Good work. I will for sure test this myself.
LikeLike
Thanks Dennis, I hope it gives you some good results, let me know how it goes
LikeLike
Ok!
LikeLike
Hi John,
Thanks for sharing !
I’m looking forward to run your script on my XenDesktop environnement but no way to grab the Logon Simulator on their website. No download link after filling the form… Is this tool still free ?
Thanks if you have any idea.
LikeLike
Try this link – they just redid the site – https://www.controlup.com/products/logon-simulator/
LikeLike
Awesome Work James!
It works manually from a “Launch Server “(execute PS Script), but I still have problems with the Scheduled Task:
– No Errors in the Scheduled Task
– Log file looks good (identical to “manual execution”)
– ControlUpLogonSim.exe is started (Task Manager)
However, there is no login on the terminal server.
An idea?
Best Regards
Sascha
LikeLike
Hi Sascha – its been a long time since I’ve played with the script, I’ve moved over to using autologons from sysinternals with a scheduled Task that logs the autologon account off as soon as it logs on – seems to do the trick quite nicely
LikeLike