Will man im Benutzerkontext innerhalb einer Citrix Sitzung Information vom Clientrechner ermitteln wie z.B. Client Name, Client IP, Client Betriebssystem, Version der Citrix Workspace App, etc. so wäre dies über die WMI Schnittstelle möglich. Citrix stell diese Informationen im Namensraum „Root\Citrix“ durch entsprechende Klassen zur Verfügung.
Hier einige beispielhafte PowerShell Schnipsel, die aufzeigen was man so alles abfragen kann:
# Citrix Client Version, Client Name, Client IP, Client Product ID (aka OS), etc.
Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_Client
# Translate ProductID to Client OS
switch ((Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_Client -OutVariable CitrixClient).ProductID)
{
'1' {write-host "Windows"}
'81' {write-host "UNIX / Linux"}
'82' {write-host "MacOS"}
'83' {write-host "iOS"}
'84' {write-host "Android"}
'85' {write-host "Blackberry"}
'86' {write-host "Windows Phone 8/WinRT"}
'87' {write-host "Windows Mobile"}
'88' {write-host "Blackberry Playbook"}
'257' {write-host "HTML5"}
'261' {write-host "Java"}
'7945' {write-host "Windows CE"}
'32940' {write-host "Wyse WinCE"}
'32993' {write-host "Wyse ThinOS"}
Default {write-host "unknown"}
}
# ICA Latency, Round Trip Time (RTT), Bandwidth, etc.
Get-WmiObject -Namespace root\Citrix\euem -Class Citrix_Euem_RoundTrip
# Username, Client Machine Name, Client Machine IP, Session ID, Passthrough Client Session Id, etc.
Get-WmiObject -Namespace root\Citrix\euem -Class Citrix_Euem_ClientConnect
# ICA Port, SR Port, Protocol details, etc.
Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_Network
# Published Name, Encryption, Is Publsihed App, Is HDX Protocol UDP, etc.
Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_Sessions
# List Virtual Channel Channels with status
Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_VirtualChannel | Where-Object {$_.__Class -notlike "*_Enum"} | Select-Object __Class,IsEnabled, IsActive
# List redirected smartcards
Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_VirtualChannel_SmartCard_Enum | Select-Object Component_*
# List USB Redirection rules
(Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_VirtualChannel_USB).Policy_RedirectionRules
# VDA version, Farm Name (aka Site Name), Delivery Group Name, License Server, etc.
Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_XenDesktop
# Site Name, Delivery Group Name, Machine Catalog Name, Delivery Controller
Get-WmiObject -Namespace root\Citrix\DesktopInformation -Class Citrix_VirtualDesktopInfo
# Graphic protocol details
Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_Virtualchannel_thinwire
Get-WmiObject -Namespace root\Citrix\hdx -Class Citrix_VirtualChannel_Framehawk
# VDA parameter details like Delivery Group, Machine Catalog, Delivery Controller, Hypervisor Connection, etc.
Get-WmiObject -Namespace root\Citrix\VdaParameters -Class CitrixVdaParameters
Über diese Beispiele hinaus gibt es noch einige weitere Namensräume und Klassen mit einer Vielzahl vom Eigenschaften die man abfragen kann. Um alle zu ermitteln kann folgender Codeschnipsel verwendet werden:
# List all properties of all classes and namespaces below Root\Citrix
foreach ($Namespace in Get-WmiObject -Namespace root\Citrix -Class __Namespace)
{
$Classes = (Get-WmiObject -Namespace root\Citrix\$($Namespace.Name) -List | Where-Object {$_.name -like 'Citrix*'}).Name
foreach ($Class in $Classes)
{
Write-Host "`n### Namespace root\Citrix\$($Namespace.Name) and class $Class ###`n"
Get-WmiObject -Namespace root\Citrix\$($Namespace.Name) -Class $Class
}
}