Skip to content
Load Testing software using PowerShell to test Citrix XenApp and XenDesktop environments.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This project is a set of PowerShell scripts which can be used to load test Citrix SBC or VDI environment and/or test application performance

Table of contents

General info

This project was born out of need to do Non Functional Performance testing. Our licence for LoginVSI had lapsed. To work around this issue, I created the load testing tools using PowerShell. Since that project, I have developed it a bit further and I felt like others could leverage this if they needed to.

I completed a presentation at the Winter 2019 UK Citrix User Group. A copy of this presentation can be found here


Control - Version 4.0 - Multi Launcher

Workload Script Demo Controlv4 Multi Launcher Demo

To view previous versions, see my channel on YouTube


  • Control - version 1.0 - This is a simple PowerShell script to launch sessions

  • Control - version 2.0 - Single Launcher - This is a GUI PowerShell script to launch sessions

  • Control - version 3.0 - Multi Launcher - This is a GUI PowerShell script to connect to separate launcher machines.

  • Control - version 4.0 - Multi Launcher - This is a GUI PowerShell script to connect to separate launcher machines, functions are in ControlFunctions.psm1 file and provides feedback on Launcher status.

  • Colourpicker - version 1.0 - This is a GUI PowerShell script to get RGB colours from cursor position

  • Colourloop - version 1.0 - This is a PowerShell script return RGB values for a pixel and loop. Useful for building workload scripts when page is refreshes.


  • Create a file share and copy the contents of this project in at the root. Ensure the test users can write to the status and errors folders (this is for the endtest.txt signaller file and to copy error screenshots)

  • Copy the workload.ps1 script and amend the Initialize-Test and Start-Test functions to complete whatever workloads you want to run.

  • On each VDA, ensure that there is a c:\temp directory that each test user can write to.

  • Ensure that the launched app/desktop is set to Auto to be published in test user favourites and that storefront does not auto launch apps.

  • Ensure that StoreFront URL is in trusted sites on Launcher VMs. Otherwise the script will pause asking for the ICA file to be downloaded.

  • Ensure that scripts\start.bat file is set to unblocked (file > properties > Unblock) otherwise Login Script will prompt use to run script.

Single Launcher

Run Control-SingleLauncher.PS1 from your launcher VM (must have Citrix Workspace or Receiver client). This loads the GUI from the gui.xaml file. This file also includes the default options for each element and they can be amended to suit.

Apart from

  • Domain is automatically picked up from machine
  • Fileshare is picked up from the launched location

Multi Launcher

For Multi Launcher, login to launcher VMs (need Citrix Receiver/Workspace installed) and run the scripts\startlauncher.ps1 file. This will ask for the password for the test user accounts. It will then loop until test started. From a controller machine, run control-multilauncher.ps1 and enter the relevant information. Click Start Test.

This will create some files in the status folder. The launchers will check this folder and begin the test.


  • Performance monitor logs will be placed in the perfmon folder after a test
  • Step timing will be placed in the timings folder after a test
  • Any errors (x3) will take a screenshot and placed in the errors folder.
  • Central way of controlling launchers

To-do list:

  • Auto creation of c:\temp drive on each VDA with permissions
  • Tidying up code
  • Error Handling/Logging
  • Workload Recorder


Project is: in progress but as I do not manage Citrix these days, my input will be limited.


Below are some of the links I used to help with this project. There are some other functions and code I have used from the Internet. Where possible, I have commented with the originating link in the script or in the PPTX.

Powershell Runspaces

Template for WPF with runspaces

Debug Runspaces

Jim Moyle WPF (EP7 and 8) and Powershell (runspaces)

Script for launching Citrix Sessions

Getting session information in PowerShell

GitHub Readme cheat sheet


Created by @shammyowens

Teamas Blog

If this has been useful, feel free to buy me a coffee :-)

You can’t perform that action at this time.