Citrix XenDesktop per PowerShell Commandline abfragen
Aus znilwiki
Hier sammle ich alle Befehle um später per Zabbix den Status einer Citrix-XenDesktop Umgebung zu überwachen.
Delivery Controller
Die nachfolgenden Beispiele wurde alle auf einem "Delivery Controller" ausgeführt.
Unregistrierte Desktops
Wir prüfen immer nur alle Systeme die auch eingeschaltet sind.
Get-BrokerDesktop -RegistrationState "Unregistered" -PowerState On
Umgekehrt abgefragt, also alle die nicht auf "Registered" stehen:
Get-BrokerDesktop -Filter { RegistrationState -ne 'Registered' } -PowerState On
Hängen wir ein Measure-Object
dran so bekommen wir die Anzahl der Objekte - also hier die Desktops:
Get-BrokerDesktop -Filter { RegistrationState -ne 'Registered' } -PowerState On | Measure-Object
Leider ist das dann noch nicht im Zabbix-Format - als Übersicht aber schon gut.
Für Zabbix brauchen wir nur einen einzelnen Rückgabewert - also nur die Anzahl, sonst nichts. Und war auch wenn da "nichts" ist.
Die PowerShell gibt z.B. nichts zurück wenn da kein Objekt ist - dann brauchen wir aber eine "0".
Ich habe deshalb einen PowerShell Einzeiler gebaut der schlichtweg die Objekte zählt:
powershell asnp Citrix.* ; $iNotRegistered = 0 ; "Get-BrokerDesktop -Filter { RegistrationState -ne 'Registered' } -PowerState On | ForEach-Object { $iNotRegistered = $iNotRegistered + 1} ; Write-Output $iNotRegistered"
Die Variable $iNotRegistered
wird zunächst auf 0 gesetzt und dann für jeden vorhandenen, nicht registrierten, Desktop um 1 erhöht.
Registrierte Desktops
Das gleiche wie zuvor, nur das wir nach den registrierten Desktops fragen:
Get-BrokerDesktop -RegistrationState 'Registered' -PowerState On
Und noch mal Zabbix-Konform nur die Anzahl:
powershell asnp Citrix.* ; $iRegistered = 0 ; "Get-BrokerDesktop -RegistrationState 'Registered' -PowerState On | ForEach-Object { $iRegistered = $iRegistered + 1} ; Write-Output $iRegistered"