<< Back to Script Library
Get Horizon Client Information
Retreives and displays VMware Horizon Client information
Information is gathered from the Volatile Environment registry keys. More info about these can be found here: https://docs.vmware.com/en/VMware-Horizon/2103/horizon-remote-desktop-features/GUID-86ED59AD-3A2C-4B71-8CFE-19B33E76E571.html
Parameters: SessionID, Username
Information is gathered from the Volatile Environment registry keys. More info about these can be found here: https://docs.vmware.com/en/VMware-Horizon/2103/horizon-remote-desktop-features/GUID-86ED59AD-3A2C-4B71-8CFE-19B33E76E571.html
Parameters: SessionID, Username
Version: 1.3.26
Created: 2021-08-30
Modified: 2021-08-30
Creator: wouter.kursten
Downloads: 133
Tags:
Created: 2021-08-30
Modified: 2021-08-30
Creator: wouter.kursten
Downloads: 133
Tags:
The Script
Copy Script
Copied to clipboard
<#
.SYNOPSIS
Retreives client information for VMware Horizon Clients.
.DESCRIPTION
Retreives client information for VMware Horizon Clients from the Volatile Environment.
.PARAMETER sessionid
Id of the session to retreive the information for.
.PARAMETER Username
This adds the UserName to the overview
.EXAMPLE
To get client information use .\show_horizon_client_info.ps1 -sessionid 3 -username cuemea\wouterk
.COMPONENT
.NOTES
Version: 0.1
Author: Wouter Kursten
Creation Date: 30-08-2021
Purpose: Retreiving Client information for VMware Horizon Clients
MODIFICATION_HISTORY
Wouter Kursten, 30-0-2021 - Original Code
LINKS
Information on the registry keys in the Volatile Environment can be found here: https://docs.vmware.com/en/VMware-Horizon/2103/horizon-remote-desktop-features/GUID-86ED59AD-3A2C-4B71-8CFE-19B33E76E571.html
#>
[CmdletBinding()]
Param
(
[Parameter(
Position = 0,
Mandatory=$true,
HelpMessage='User Session ID'
)]
[ValidateNotNullOrEmpty()]
[int] $sessionid,
[Parameter(
Position = 1,
Mandatory=$true,
HelpMessage='User Name'
)]
[ValidateNotNullOrEmpty()]
[string] $UserName
)
$volatileenv = Get-ItemProperty "HKCU:\Volatile Environment\$sessionid"
$displaydata = (((($volatileenv | select-object -expandproperty 'ViewClient_Displays.TopologyV2').replace('},{','};{')).replace("{","")).replace("}","")).split(";")
if ($volatileenv -like "*viewclient*"){
$myObject = [PSCustomObject]@{
"Session User" = $UserName
"Client Machine Name" = ($volatileenv).ViewClient_Machine_Name
"Client Machine Domain" = ($volatileenv).ViewClient_Machine_Domain
"Client Type" = ($volatileenv).ViewClient_Type
"Client MAC Address" = ($volatileenv).ViewClient_MAC_Address
"Client Logged On User" = ($volatileenv).ViewClient_LoggedOn_Username
"Client Logged On Domain Name" = ($volatileenv).ViewClient_LoggedOn_Domainname
"Client Logged On FQDN" = ($volatileenv).ViewClient_LoggedOn_FQDN
"Client IP Address" = ($volatileenv).ViewClient_IP_Address
"Client System DPI" = ($volatileenv).'ViewClient_Displays.SystemDPI'
"Client Protocol" = ($volatileenv).ViewClient_Protocol
"Client Launch ID" = ($volatileenv).ViewClient_Launch_ID
"Client Launch Session Type" = ($volatileenv).ViewClient_Launch_SessionType
"Client Time Zone ID" = ($volatileenv).ViewClient_TZID
"Client Windows Time Zone" = ($volatileenv).ViewClient_Windows_Timezone
"Client Keyboard Language" = ($volatileenv).'ViewClient_Keyboard.Language'
"Client Keyboard Layout" = ($volatileenv).'ViewClient_Keyboard.Layout'
"Client Language" = ($volatileenv).ViewClient_Language
"Client Version" = ($volatileenv).ViewClient_Client_Version
}
$index = 0
foreach ($display in $displaydata){
$data = $display.split(",")
$myObject | Add-Member -NotePropertyName "Display $index Width" -NotePropertyValue $data[0]
$myObject | Add-Member -NotePropertyName "Display $index Height" -NotePropertyValue $data[1]
$myObject | Add-Member -NotePropertyName "Display $index left" -NotePropertyValue $data[2]
$myObject | Add-Member -NotePropertyName "Display $index top" -NotePropertyValue $data[3]
$myObject | Add-Member -NotePropertyName "Display $index Bits Per Pixel" -NotePropertyValue $data[4]
$myObject | Add-Member -NotePropertyName "Display $index Is Primary" -NotePropertyValue $data[5]
$myObject | Add-Member -NotePropertyName "Display $index DPI" -NotePropertyValue $data[6]
$index += 1
}
Write-output "VMware Horizon Client information:"
write-output $myobject
}
else{
write-output "No ViewClient Data found, are you sure this is an active VMware Horizon Session?"
}