List all the active VMware Horizon client versions that are used

Before upgrading a VMware Horizon environment I want to known what VMware Horizon Client versions are in use.  Just to be sure that the VMware Horizon clients are supported when upgrading to a new VMware Horizon version.

Another use-case is to identify the VMware Horizon Client versions that are in use for security releated issues.  In the VMware Horizon Administrator you can allow what VMware Horizon client versions are able to connect.

The following script displays all the VMware Horizon sessions and the VMware Horizon client version that is used to connect to the VMware Horizon environment.

Make sure that the VMware.HV.Helper module is installed (Link).

<#
.SYNOPSIS
    HorizonClient.ps1.ps1
.VERSION
    1.0
.DESCRIPTION
    List all the Connection and displays the VMware Horizon client version. 
.NOTES
    Author(s): Ivo Beerens
    Requirements:  
        Make sure the VMware.HV.Helper module is installed, see: https://github.com/vmware/PowerCLI-Example-Scripts
        Copy the VMware.Hv.Helper to the module location.
.EXAMPLE
    PS> ./HorizonClient.ps1
#>

# Variables
$connectionserver = 'srv-con-01'
$domain = 'lab.local'
$date = Get-date -UFormat "%d-%m-%Y"
$output = "C:\Temp\horclients-$date.csv"

# Import module
Import-Module VMware.Hv.Helper

Write-Output "", "Connecting to the Horizon Connection Server"
Connect-HVServer -Server $connectionserver -domain $domain

# List all Users and clients with the Horion client the are running
$localsessioninfo = (get-HVlocalsession).Namesdata | Select-Object UserName, MachineOrRDSServerName, AgentVersion, DesktopPoolCN, ClientType, ClientAddress, ClientName, ClientVersion, SecurityGatewayDNS, SecurityGatewayAddress | Sort-Object ClientVersion

# Export the output to a grid and CSV file
$localsessioninfo | Out-GridView -Title 'VMware Horizon Client versions'
$localsessioninfo | export-csv $output -Force -NoTypeInformation

Disconnect-HVServer * -Confirm:$false

This script (HorizonClients.ps1) can be found on my GitHub repo (Link)

Create a central VMware Tools repository

VMware Tools releases have been decoupled from VMware vSphere release since version 10.0. You can now standardize to the latest VMware Tools by configuring a centralized repository. This can be useful when you want to point to a new VMware Tools version when for example a security vulnerability in identified VMware Tools. This is recently happened and described in the VMSA-2021-0013 security advisory. (link) for example.

Requirements:

  • VMware ESXi 6.7 Update 1 or later
  • PowerCLI installed

Here are the steps to create a central VMware Tools repository:

  • Create a folder structure on a central datastore (all VMware ESXi hosts have access to this datastore)  in the cluster. For example:
    • On the nfs01 datastore is created a folder called “vmwtools“, under that folder, I created another folder called “11.3.0-18090558
  • Download the latest VMware Tools version, link
  • Extract the VMware Tools ZIP file. Two folders are extracted:
    • floppies
    • vmtools
  • Upload the two folders to the folder structure created. In this example I used: /vmfs/volumes/vmwtools/11.3.0-18090558

  • Change the following variables so it matches the vSphere environment:
    • $cluster
    • $datastore
  • The PowerCLI script below will point all the VMware ESXi hosts in a cluster to the central VMware Tools repository location.
  • Execute this script
# Import PowerCLI module
Import-Module VMware.PowerCLI

# VMware VirtualCenter server name 
$VCserver = read-host "Enter the vCenter server name"

# Connect to the vCenter server 
Connect-VIServer -server $VCserver

$cluster = 'CL-MGNT'
$hosts = Get-Cluster -Name $cluster | Get-VMHost
$datastore = '/vmfs/volumes/nfs01/vmwtools/11.3.0-18090558/'

# Display current VMware Location
$hosts | Get-AdvancedSetting -Name "UserVars.ProductLockerLocation" | Select-Object Entity,Value

# Change VMware Tools location 
Get-cluster -name $cluster | Get-VMhost | %{$_.ExtensionData.UpdateProductLockerLocation($datastore)}  

# Display current VMware Location
$hosts | Get-AdvancedSetting -Name "UserVars.ProductLockerLocation" | Select-Object Entity,Value

# Disconnect vCenter 
Disconnect-VIserver -server * -Confirm:$false

The default location of the VMware Tools is: /locker/packages/vmtoolsRepo/

  • Select a Windows VM in the vSphere cluster. A message is displayed that there is a newer version of VMware Tools available.
  • Select Upgrade VMware Tools (It is possible that the VM is automatically rebooted when choosing for an Automatic Upgrade).

  • After the installation, check if VMTools is running and if the version is current.

Creating a central VMware Tools repository is an easy step that is very useful to stay up to date with the latest VMware Tools versions for the Virtual Machines.

The VMware PowerCLI script listed above can be found on my GitHub repository, link.

Quick Tip: Download the latest Windows 10 ISO file

Today on May 18, 2021, Windows 10 21H1 is released (May 2021 Update). This 21H1 version is a minor release version and the 21H2 version (later this year) will be a major release version. I use the latest Windows 10 versions in my lab environment for creating and testing golden images for VDI environments.

To download the latest Windows 10 ISO file I use the Windows 10 Media Creation Tool. This is a Windows-based tool. When starting the Windows 10 Media Creation Tool it opens a Graphical User Interface and you are able to download Windows 10 Home (N), Education (N) and the Pro (N) ISO. To download the Enterprise version you need to enter the command line. Here are the steps explained to download a Windows 10 Enterprise ISO:

  • Download the Media Creation Tool (MediaCreationTool21H1.exe), link
  • Select: “Download Tool now”
  • Open the command line
  • Use the following command to download the English 64-bits Windows 10 Enterprise ISO:
MediaCreationTool21H1.exe /Eula Accept /Retail /MediaArch x64 /MediaLangCode en-US /MediaEdition Enterprise
  • To download the Dutch 64-bits Windows 10 Enterprise ISO use the following command:
MediaCreationTool21H1.exe /Eula Accept /Retail /MediaArch x64 /MediaLangCode nl-NL /MediaEdition Enterprise
  • Enter the product key “NPPR9-FWDCX-D2C8J-H872K-2YT43”.  The KMS client keys can be found here: link

  • Select: Create installation media (USB flash drive, DVD, or ISO file) for another PC

  • Select “Iso file” and browse to a location to store the ISO. You need at least 8GB free on the C-drive and the ISO size is between 4 and 5 GB.

  • The download of the Windows 10 ISO starts.

Once the downloading of the ISO is completed it’s ready for use.