XenDesktop
Wie ich als CTP versuche der Citrix Community zu helfen
Nun ist es bereits 2,5 Jahre her seit ich als Citrix Technology Professional gewählt wurde. Die Wahl zum CTP war für mich eine riesige Ehre, trotzdem habe ich dazu bisher keinen grösseren Post geschrieben. Vielleicht weil ich gerade etwas über die Tatsache erstaunt war das ich gewählt wurde, oder aus Angst, weil nun noch mehr Citrix’ler und Leute aus der Community meine Artikel lesen und ich nicht die richtigen Worte finde.
Nun aber nach dieser Zeit, denke ich, bin ich in der Lage einen kurzen Rückblick zu schreiben. Dies nicht, weil ich etwa zurücktreten möchte, ich bin immer noch wohl in meiner Rolle. Aber wer weiss wann es so weit ist das ich nicht mehr genug aktiv für eine Wiederwahl zum CTP bin.
Gemäss der Citrix Webseite (https://www.citrix.com/community/ctp) werden Personen zum CTP gewählt welche viel Zeit und Wissen in die Citrix Community investiert haben. „The CTP Program recognizes the contributions of individuals who have invested a significant amount of time and resources to become experts in Citrix products and solutions.“
Ganz ehrlich gesagt fühlte ich mich nach der Wahl zum CTP etwas unter Druck nun viele neue gute Blogposts zu schreiben und auf Konferenzen zu sprechen. Beides tu ich echt gerne, aber es ist auch schwierig da man nur sprechen soll, wenn man auch was zu sagen hat … Die Health Check Scripts und die Windows 10 auf VDI Early Adopter Geschichten waren irgendwann auch nicht mehr so aktuell. Ausserdem braucht es bei den Blog Artikeln viel Zeit, da ich diese ja auch in 2 Sprachen verfasse.
Ein CTP zu sein bedeutet nicht nur den Zugang zu Beta und Early Access Releases der Citrix Produkte
, einen gesponserten Eintritt an die Citrix Synergy oder das Beste den direkten Zugang zu den Produktmanager. Neben all den CTP Goodies bedeutet es auch Verantwortung und Pflichten. Gut möglich, dass dies nicht allen Leuten bewusst ist. Ein Citrix CTP ist keine Erweiterung der Citrix Marketingabteilung! In meinen Augen ist ein CTP einen Kommunikationskanal zwischen der Firma Citrix und der Kunden, und dabei viel wichtiger das Sprachrohr vom Kunden zu Citrix.
Die Wahl zum CTP ist keine einfache Sache, aber CTP zu bleiben bedeutet ebenfalls Aufwand! Um einen wertvollen CTP zu sein sind mehrere Aktivitäten nötig. Monatlich gibt es 1-2 Online Meetings mit dem Produktmanagement welche ca jeweils eine Stunde dauern. Weiter gibt es jährlich 2 Vor-Ort Meetings welche über 2-3 Tage dauern..
Wenn sich jemand also das Ziel setzt CTP zu werden muss Einiges an freier Zeit vorhanden sein um der Rolle gerecht zu werden! Ich persönlich wende in meiner Freizeit viel Zeit für das CTP Programm auf, kriege aber auch von meinem Arbeitgeber „Die Mobiliar“ Zeit zur Verfügung. Vor allem die Vorort-Meetings möchte ich nicht alle auf Urlaub nehmen. Weiter erwähne ich hier auch gerne die Unterstützung von meiner Frau, meiner Familie, Freunde und Kollegen bei der Arbeit. Hier sage ich gerne nochmals DANKE!
Neben meiner Rolle als CTP bin ich auch aktiv für die CUGC, die Citrix User Group Community. Einerseits bin ich in der Schweiz ein sogenannter „Local Leader“ und organisiere Meetings. Weiter bin ich Mitglied des CUGC Verwaltungsrates. Dies ist zwar ein bisschen eine Doppelbelastung ich kann aber viele Synergien aus den beiden beziehungsweise drei Rollen nutzen.
Manchmal werde ich gefragt, „Was kannst du als CTP erreichen?“. Nun nach meinen 2,5 Jahren in dieser Rolle kann ich sehen das ich wirklich einen Einfluss habe und die Produkte im Sinne des Kunden in kleinen Stücken verbessern zu lassen. Ich konnte einigen Feature Requests platzieren und sah in den vergangenen Monaten das einige von diesen implementiert wurden. Es sind zwar nur kleine Features aber für mich ist das eine grosse Sache.
Hier einige Beispiele:
- VDI Battery Indicator:dieses Feature wurde mit Virtual Desktops (XenDesktop) 7.18 umgesetzt.
- Limit Number of Desktops in a Site
Der folgende Feature Request habe ich aufgrund meines SwissCUGC LocalLeader Kollegen Stefan Beckmann (https://www.beckmann.ch / @alphasteff) eingereicht. Er vermisste ein Feature das in XenApp 6.5 noch vorhanden war und nun seit XenApp 7 fehlte:
Dieses Feature wurde nun in der version 1808 (vorherige Namensgebung wäre 7.19).
(Dieses Feature ist momentan nur über PowerShell konfigurierbar, noch nicht im Studio über das GUI)
- Storefront Browser & Logout: Auch wird in diesem Artikel der Einfluss einer meiner Feature Request beschrieben: http://blog.sachathomet.ch/2017/01/03/storefront-allowreloginwithoutbrowserclose/
- Natürlich habe ich auch das Produkt Management mit dem fehlenden Disconnect Button in Windows 10 genervt, hier war ich wohl nicht der einzige. Jedenfalls gibt es da nun ein Fix: https://support.citrix.com/article/CTX225970
Ich hoffe ich konnte nun ein bisschen vermitteln was es bedeutet ein CTP zu sein und wie ich versuche als CTP meinen Citrix Pro Kollegen und der Citrix Community zu helfen. Es gibt viele geniale CTPs, die komplette Liste findet man unter https://www.citrix.com/community/ctp/awardees.html oder man kann den CTPs auf Twitter followen, eine Liste wird von Citrix gepflegt: https://twitter.com/citrix/lists/ctps
XenApp & XenDesktop CEIP (nach Hause telefonieren) verhinden
Bereits im Februar als ich meine Citrix Umgebung auf 7.13 aktualiserte, sah ich das es nicht ganz einfach ist das nach Hause telefonieren zu deaktivieren. Ich habe dann diesen kurzen Tweet gemacht:
Nun beim Update nach 7.14, hatte ich diese Problematik wieder, denn die Einstellung wurde auf meinem Lizenzserver wieder zurückgesetzt. Nun dachte ich mir das es eventuell doch ein kurze Post wert wäre.
Ich bin nicht Paranoid, aber weil alle meine Server kein Internet-Zugang haben kriege ich im Studio auch diese unschöne Meldung:
Es ist ziehmlich einfach das Verbraucher Customer Experience Improvement Program (CEIP) zu deaktieren, es muss nur diese Zeile in’s Citrix.opt auf dem Lizenzserver:
#CITRIX CEIP NONE
Von Windows 10 zu Windows 10 mit installiertem Citrix Virtual Desktop Agenten
Einführung, meine Beziehung zu Windows 10
Die Firma für welche ich arbeite, Die Mobiliar, hat bereits sehr früh mit der Integration von Windows 10 gestartet. Bereits im Frühling 2016 wurde Windows 10 sowohl auf physischen Geräten wie auch den virtuellen Desktops ausgerollt. Wir stellen unseren Citrix XenDestkop User zwei verschiedene Typen von VDIs zur Verfügung, einerseits nicht-persistente gepoolte Desktops, andererseits dedizierte persistente Desktops. Beide Typen werden mit Citrix XenDesktop 7.x zu Verfügung gestellt.
Die Arbeit als Ealry-Adopter mit so neuen Betriebssystemen ist zwar äusserst interessant, kann aber an gewissen Tagen einem den letzten Nerv rauben. Windows 10 zum laufen bringen ist eines, aber jede spezielle Komponente die man hinzufügt mach das ganze Komplexer. So wird es schwieriger wenn oben auf Windows 10 noch Citrix XenDesktop kommt und zum ganzen am Ende eventuell noch eine spezielle authentisierung mit Smart Cards.
Ich durfte bereits an der E2EVC in Rome über dieses Thema berichten: The stony road of a VDI migration from Win7 to Win10
Neues Kapitel
Nun geht die Geschichte in die nächste Runde, die erste Version von Windows 10 die wir ausgerollt haben war der Build 1511, nun ist das aktuelle Projekt der Upgrade zum anniversary update (1607). Für die gepoolten desktops ist es fraglos das wir auf grüner Wiese beginnen. Einen Neubau für die dedizierten Desktops wird aber nicht akzeptiert.
Ich war gespannt wer im gleichen Boot sitzt und habe somit diesen Twitter Poll erstellt:
36% installieren einfach Neu … Mutig? Oder einfach der neue Ansatz?
Ich verrate hier mal 2 Geheimnisse:
- Der Upgrade von Windows 10 z.B. 1511 nach 1607 lässt sich mit einem Installierten Citrix Virtual Desktop Agent (VDA) nicht durchführen!
- Die Deinstallation des Citrix VDA schlägt in den meisten Fällen fehl …
Zuerst die guteNachricht: Citrix ist sich bewusst das die Deinstallation des VDA’s problematisch ist, sonst würde es wohl kein VDA Cleanup Utility geben:
VDACleanupUtility.exe (https://support.citrix.com/article/CTX209255)
dann die schlechte Nachricht: Das VDACleanupUtility.exe (VCU) muss als Benutzer laufen, es benötigt einen Neustart und eine Nachfolgende Anmeldung mit dem vorangehenden Benutzernamen.
Diese Tatsache macht die Automatisierung nicht ganz so einfach.
Mit der Hilfe von meinem CTP Kollegen Stephane Thirion und meinen Kollegen bei der Mobiliar war ich in der Lage folgenden Guide zu erstellen, wie ein Weg zur Automatisierung des Windows 10 Build updates aussehen kann.
Das wichtigste daran ist das automatisierte entfernen des Virtual Desktop Agents.
Task Sequence für SCCM
Diese Anleitung bildet die Task Sequenz in Microsoft System Center ab, aber die folgenden Schritte lassen sich selbstverständlich auf mit anderen Enterprise Softwareverteilungen bewerkstelligen.
Ich möchte hier nochmals Stephane Thirion (https://www.archy.net) für die Tipps betreffend der deinstallation des VDAs danken. Weiter möchte ich an dieser Stelle aber auch meine Kollegen Stefan Moser und Thomas Hahnel der Mobiliar erwähnen welche für die Erstellung dieses Artikels mit ihrem SCCM Knowhow und Ihrer Geduld zum testen unverzichtbar waren.
Update Herbst 2017:
Mit der im September 2017 erschienenen Verison des Cleanup Toola ist es möglich ein unbeaufsichtigter Cleanup laufen zu lassen, siehe https://support.citrix.com/article/CTX209255 .
Weiter hat sich gezeigt dass der Update von 1607 nach 1703 oder 1709 auch mit installiertem VDA funktioneren kann.
Update November 2017:
Nun exisitiert ein Citrix Artikel: „How to Run the VDA Cleanup Utility with SCCM Task Sequences“: https://support.citrix.com/article/CTX229801
PowerManagement für dedizierte Citrix desktops? Klar mit Tags!
Habt ihr Tags bereits für XenApp & XenDesktop im Einsatz? Vielleicht gäbe es den einen oder anderen guten Anwendungsfall. Tags zu Resourcen, in meinem Fall virtuellen Desktops, können sehr mächtig sein speziell in Kombination mit Power Shell scripts. Es ist möglich Aktionen abhängig der Tags zu machen. Natürlich können Tags auch verwendet werden als Filter für Citrix Richtlinien (Policies) was ich auch als sehr hilfreich erachte.
Ich hatte das Problem das ich eine Bereitstellungsgruppe hatte mit dedizierten Windows 10 desktops und für dedizierte Desktops gibt es bekannter weise kein Power Management. Eigentlich ist ein Power Management dazu auch obsolet da herunter gefahrene Maschine beim anklicken im StoreFront wieder gestartet werden. Das Problem in unserer Umgebung ist jedoch das gewisse Desktops auch anders als über StoreFront angegangen werden und somit ausgeschaltete Maschinen ein Problem sind.
Wird eine Maschine somit herunter gefahren endet das in einem Incident Ticket.
Meine Lösung zu diesem Problem ist es, das ich diese speziellem Maschine mit einem tag „AlwaysOnline“ im Studio versehe. Weiter habe ich dann das nachfolgende kleine Script geschrieben welches auf dem Delivery Controller alle 15 Minuten per Scheduled Task gestartet wird:
param([string]$tags=$(throw "Tag parameter is required"), [string]$poweroperation=$(throw "Power operaton parameter is required")) #============================================================================================== # Created on: 09.2016 Version: 0.2 # Created by: Sacha Thomet # File name: PowerOperation-DependingMachineTags.ps1 # # Description: This is a Powershell to change the PowerState of VDI's or XenApp Servers in # a PowerManaged XenDesktop 7.x environment accodring to Tags. # # Prerequisite: None, a XenDesktop Controller with according privileges necessary # # Call by : Manual or Scheduled Task #============================================================================================== # Load only the snap-ins, which are used if ((Get-PSSnapin "Citrix.Broker.Admin.*" -EA silentlycontinue) -eq $null) { try { Add-PSSnapin Citrix.Broker.Admin.* -ErrorAction Stop } catch { write-error "Error Get-PSSnapin Citrix.Broker.Admin.* Powershell snapin"; Return } } # Change the below variables to suit your environment #============================================================================================== $maxmachines = "1000" # as default only 250 records, this increase it to 1000 #$tags = "AlwaysOnline" # if you comment out the param line you can have the tag here #$poweroperation = "TurnOn" # if you comment out the param line you can have the poweroperation here $machines = Get-BrokerMachine -MaxRecordCount $maxmachines | Where-Object {$_.tags -eq $tags } foreach($machine in $machines) { $machinename = $machine | %{ $_.MachineName } Write-Host "Action $poweroperation will be performed for $machinename " New-BrokerHostingPowerAction -Action $poweroperation -MachineName $machinename }
Ich weiss ich weiss … dies ist ein sehr ungewöhnlicher Anwendungsfall, aber das Script Konstrukt soll in erster Linie aufzeigen was mit Tags möglich ist, die Möglichkeiten sind fast unbegrenzt!
Mein Beispielscript auf GitHub: PowerOperation-DependingMachineTags.ps1
Endlich 1.0 – aber noch lange nicht fertig!
Im November 2014 habe ich ein Artikel geschrieben über die Übernahme des HealthCheckScripts für XenApp & XenDesktop 7.x:
XenDesktop & XenApp FMA (7.x) HealthCheck – Oops!… I Did It Again
Jetzt nach fast 2 Jahren fortlaufender Entwicklung dieses Scripts präsentiere ich die Version 1.0 des XenApp & XenDesktop HeathChecks.
Gestartet bin ich mit einer ziemlich rudimentären Version des Scripts und mittlerweile habe ich einige Tester und Mitwirkende bei diesem Script. Zwischenzeitlich ist das Script auch auf GitHub zu finden und es ist positiv überraschend wie viele Leute aus der Community bereits mit helfen das Script zu erweitern und verbessern.
Nachdem viele 0.xVersionen released wurden, ist jetzt neu auch die XML Konfigurationsdatei mit dabei. Diese Änderung, welche wir vor allem Stefan Beckmann zu verdanken haben, ist es Wert die Version nun 1.0 zu nennen.
Der grosse Vorteil der XML-Datei ist es, dass das Script und die Konfiguration von einander getrennt sind. Somit ist sowohl der Austausch des Scripts wie auch die Pflege von vielen verschiedenen Umgebungen kein Problem. Vorher musste nach dem Austausch des Scripts immer noch der Header angepasst werden. Jetzt wird einfach nur das Script aktualisiert, sofern nichts im XML geändert hat bleibt dieses genau so bestehen.
Die XML Datei muss sich im gleichen Verzeichnis befinden wie das Script und der gleiche Namen haben, wie hier dieses Beispiel:
XA-and-XD-HealthCheck.ps1 XA-and-XD-HealthCheck_Parameters.xml
Wie bereits erwähnt wurde die XML Datei von Stefan Beckmann (Twitter: @alphasteff) integriert.
Die neuste Version des Scripts kann jeweils auf GitHub gefunden werden:
https://github.com/sacha81/XA-and-XD-HealthCheck
Die HTML Ausgabe gewinnt von Version zu Version mehr Inhalt, schwierig ist es natürlich zu entscheiden welche Funktionserweiterungsanfragen berücksichtig werden und welche nicht. Jede weitere Funktion kann das Script unübersichtlicher machen und erhöht die Laufzeit des Scripts. Einige Funktionen können deshalb im XML ein und ausgeschaltet werden.
Aktuell wird von den Delivery Controller und den Worker Maschinen (XenApp Server und virtuelle Desktops) der Prozessor, der Festplattenplatz und der Ram Speicher gecheckt. Da in einer Umgebung mit der FMA Architektur problemlos unterschiedliche Versionen von VDAs im Einsatz stehen können, wird nun auch dies geprüft und ausgegeben. Weiter sind für die Störungssuche auch Informationen zu den Hypervisor Hosts in den Worker-Tabellen enthalten.
Dieser Code ist auf GitHub:
https://github.com/sacha81/XA-and-XD-HealthCheck/
Für Fehlermeldungen oder Funktionserweiterungsanfragen benutzt bitte direkt GitHub, natürlich freue mich auch über die Mitarbeit an den Scripts in GitHub!
Welcome to the Jungle … of the Citrix Display Modes
When I started to work with Remote Desktop stuff back in 2001 there was one thing definitely not possible, watch a video over a remote connection – not even with Citrix … in the last years a lot of things changed and Citrix improved their protocols and Video codecs from version to version. Today you can do awesome things over a remote connection with Citrix. There are many blogs and articles which shows what’s possible, also for GPU mapping 3D stuff and so on … this blog doesn’t describe how you can get the awesome 3D things out from your VDI. It’s more what if you don’t have special requirements for 3D, you don’t have time to test all possibilities, no time to tune, but you want have the best result according to the Pareto principle.
What do you configure? Nothing? Just default, because default is the setting which will fit for most Users?
Are you aware that default setting on XenApp/XenDesktop until VDA 7.9 was Thinwire with H.264 and since VDA 7.9 it’s Thinwire Plus (Compatibility Encoder)?
You need to consider this fact before you upgrade from 7.x to 7.9! Why they changed that? Is Thinwire Plus better? No! Is Thinwire H.264 better? No!
It’s just different! What are the differences? What I need to choose? It depends! But on what?
This blog post is mainly a comparison between Thinwire Plus and Thinwire H264 !
I’ve done a survey what is preferred for the codec on twitter, funny result 50% vs 50%:
I’ve started some tests, also with the Pareto principle, so no deep scientific background! I tested an internal video in our Intranet of 53 seconds and 1 minute of a YouTube video, Big Buck Bunny, with 25 fps, set to 720p in YouTube. I had an eye on the user experience, means fragments, fluent movie, lip-sync and on the other side on the resource consumption like CPU and bandwidth.
(Advice if you like to do your own tests, Big Buck Bunny is nice to impress people but if you want test for lip-sync take an other movie … the Bunny doesn’t talk much …. )
For this tests I used the best, or the only one tool on the market to analyze remote display stuff, the Remote Desktop Analyzer from
Bram Wolfs and Barry Schiffer. In version 1.4 you can do some very helpful statistic reports:
I have tested with:
Virtual Desktop:
- Windows 10, VDA 7.9, 2 vCPU, 4 GB Memory, virtualized on VMWare ESX.
Video Codecs:
- Thinwire +
- Thinwire with H264
Client:
- Mac OSX
- Windows 10
- HDX Raspberry Pi
and thank you to René Bigler (Twitter @dready73 ) to test with those clients:
- ChromeBook
- Linux ThinClient (IGEL)
And this are our Results:
My personal conclusion:
If you have clients like ChromeBook or Windows who can manage H.264 this is your way to go. With limited H264 on the end device you run better with Tw+.
I work in a company which has internal only Windows 10 client devices but from external we have users with BYOD, and MacBooks are not a minority. For this reason I set a Citrix Policy which set all connection not coming over Netscaler to Tw with H.264. So we have internal the best result and external still a good result over the average. What would be the best, is when it’s possible to set a Citrix Policy according to the Client OS which connects.
Recommended Links:
HDX Graphics Modes – Which Policies Apply to DCR/Thinwire/H.264 – An Overview for XenDesktop/XenApp 7.6 FP3: http://support.citrix.com/article/CTX202687
Citrix Display modes: How to configure, what to configure, when to configure: https://bramwolfs.com/2016/02/24/citrix-display-modes-how-to-configure-what-to-configure-when-to-configure
H.264 compression JUL 19 2013 A graphical deep dive into XenDesktop 7 https://bramwolfs.com/tag/h-264-compression
Update 23.9.2016:
An excelent blog post here: Citrix HDX Just Got Smarter…Again https://www.mycugc.org/blog/citrix-hdx-just-got-smarter…again?source=6 a post about selective H264 with XenApp / XenDesktop 7.11
Opfer des guten Rufes – zu wenig freie pooled Desktops frühzeitig erkennen
Der Citrix Director ist wirklich kein schlechtes Werkzeug und mit der Version 7.7 wurde es sogar noch um einiges besser da nun auch Emails versendet werden können. Aber ein Problem haben wir zurzeit in der Firma trotzdem, die unpersönlichen virtuellen Desktops welche für den Fernzugang genutzt werden, sind auf Grund guter Mund-zu-Mund Propaganda immer populärer. Und nun möchten wir gerne wissen wann es knapp wird bevor keine Desktops mehr zur Verfügung stehen. Natürlich kann ich mir täglich die Zahlen im Director anschauen, aber ich würde eigentlich gerne vom System informiert wenns eng wird.
Dazu habe ich nun ein ganz kurzes Script gemacht, welches sobald die Anzahl freier Desktops einen definierten Schwellwert unterschreitet eine Email auslöst:
Das Script ist auf GitHub:
https://github.com/sacha81/Citrix-XD-Alert-low-free-desktops
Citrix User Profile Manager 5.3 ?
The hidden release of UPM 5.3, the finding of today … 2 days ago the Feature Pack 3 for XenApp & XenDesktop which contains the new Citrix Virtual Desktop Agent which should support Windows 10 .
I replaced the VDA Tech Preview with this Version on my Win 10 VDI. In my updating fever I also tried to update it on my Win7 VDIs, and wow, I found out that it contains a new version of Profile Manager, version 5.3!
I was surprised that with the installation of FP3 some profile issues i had was gone on my W7 VDIs.
But unfortunately I have issues with the Keyboard when I accessing my VDI’s from Mac OSX clients
http://discussions.citrix.com/topic/371328-xendesktop-76-fp3-3-vda-keyboard-issue-with-mac-receivers/
Problem: I want to solve my profile issues but I cannot install FP3 VDA because of this issue.
Erik Bakker (@bakker_erik) gave me the great hint to unzip the VDA Source (VDAWorkstationSetup_7.6.300.exe or the vdaserversetup.exe) to extract the files needed for UPM 5.3. Thanks!
Installation of UPM 5.3 also appears on appwiz.cpl
So if you are in a similar situation like I was this is a possible way to get early a UPM 5.3 installation without the need to update the VDA. But keep in mind, this is a dirty hack an I’m pretty sure that it wouldn’t be supported from Citrix … All what you do, you do on your own risk. Possibly there’s a reason that UPM 5.3 is not yet officially released … see http://discussions.citrix.com/topic/371286-profile-management-53
Update: Seems there are Issues with UPM 5.3 on Windows 10, I propose to wait with the installation of 5.3.
PoSh Script who alert me if I’m running out of pooled Desktops
Just a small one, last days I’ve created a small script who alert me if I’m running out of pooled Desktops.
If you run this script at regular intervals you will receive an email as soon you have less desktops free than you defined as threshold:
#============================================================================================== # Created on: 08.2015 Version: 0.2 # Created by: Sacha Thomet # File name: Citrix-XenDesktop-Alert-low-free-desktops.ps1 # # Description: Check for Free Desktops in DeliveryGroups # # Prerequisite: None # # Call by : Scheduled Task e.g every 10 minutes # # Changelog: # V0.1 Initial Version, create report file from array FreeDesktopReport and attach this to the email. # V0.2 Change from txt-file to formatted HTML-Mail # #============================================================================================== if ((Get-PSSnapin "Citrix.Common.Commands" -EA silentlycontinue) -eq $null) { try { Add-PSSnapin Citrix.* -ErrorAction Stop } catch { write-error "Error Citrix.* Powershell snapin"; Return } } # Change the below variables to suit your environment #============================================================================================== # Variables what should be changed according your environment and wishes $DeliveryGroups = @("Win7-Desktops","Win10-Desktops") $minDesktops = 10 $directoraddress="http://citrixdirector.mycompany.ch" $EnvironmentName="Production XenDesktop" # E-mail report details $emailFrom = "[email protected]" $emailTo = "[email protected]" $smtpServer = "mailrelay.mycompany.ch" #=======DONT CHANGE BELOW HERE ======================================================================================= $mailbody = $mailbody + "<!DOCTYPE html>" $mailbody = $mailbody + "<html>" $mailbody = $mailbody + "<head>" $mailbody = $mailbody + "<style>" $mailbody = $mailbody + "BODY{background-color:#fbfbfb; font-family: Arial;}" $mailbody = $mailbody + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse; width:60%; }" $mailbody = $mailbody + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black; text-align:left;}" $mailbody = $mailbody + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}" $mailbody = $mailbody + "</style>" $mailbody = $mailbody + "</head>" $mailbody = $mailbody + "<body>" $mailbody = $mailbody + "This is the Low-Desktop-Alert for $EnvironmentName, if you receive this mail the value of free desktops is below the configured threshold of $minDesktops desktops! <br><br>" $FreeDesktopReport = @() foreach($dg in $DeliveryGroups) { $desktops = Get-BrokerDesktopGroup | where {$_.Name -eq $dg } $CurrentDeliveryGroup = "" | Select-Object Name, Alert, DesktopsAvailable # Write Array Values $CurrentDeliveryGroup.Name = $dg $CurrentDeliveryGroup.DesktopsAvailable = $desktops.DesktopsAvailable if ($desktops.DesktopsAvailable -lt $minDesktops ) { Write-Host "Number of free desktops to low for DeliveryGroup $dg, sending email" # Add Line to Report $CurrentDeliveryGroup.alert = "True" } $FreeDesktopReport += $CurrentDeliveryGroup } $mailbody += $FreeDesktopReport | ConvertTo-Html $mailbody += "<br><br>Launch Citrix Studio or browse to <a href=$directoraddress>Citrix Director</a> see more information about the current Desktop usage<br>" $mailbody = $mailbody + "<body>" $mailbody = $mailbody + "</html>" # If any record raises an alert, send an email. if (($FreeDesktopReport | where {$_.alert -eq "True"}) -ne $null) {Send-MailMessage -to $emailTo -from $emailFrom -subject "********* Low free Desktop Alert for $EnvironmentName *********" -Body $mailbody -BodyAsHtml -SmtpServer $smtpServer }
Or download the Script here
XenDesktop & XenApp FMA (7.x) HealthCheck – Oops!… I Did It Again
Some months ago I’ve created the Citrix PVS Health-Check Script which is a based on the idea and some parts of code from the Health-Check Script for XenApp 6.x of Jason Poyer (http://deptive.co.nz/) .
Because now XenApp 7 with the Release 7.6 is finally in a state where considering an upgrade of the 6.x farms make sense, I belief that the demand for a XenApp 7.x Health Check Script grows.
So I did it again and took the „HealthCheck framework“ to build a new version which combines the Power of the Citrix PS-Snappins for XenDesktop/XenApp and the HTML-Output-Script of the existing HealthCheck Scripts.
The result is a new HealthCheck Script which is usable for XenApp and XenDesktop 7.x and what makes me also happy, with only a few line of more code the Script is downwardly compatible for XenDesktop 5.6 environments.
This is just the first version and I’m sure that more check’s need to be added. Feedback and „Feature requests“ are welcome … And to be honest I have not yet a big environment to test my Script, so please be insightfully if you find some bugs and report them to me.
In the first part of the Script you are able to configure some parameters. You can decide if you only want to see the „bad“ Desktops on which something it’s going wrong or if you want see everything. In huge XenDesktop environments you want definitely only see the bad machines … ( $ShowOnlyErrorVDI = 1 ) Also you can decide if you want only report XenApp or only XenDesktop or both. The Desktops and XenApps are in two different Tables. It’s also possible to exclude Collections ($ExcludeCatalogs) from the Check, so virtual Desktops which are for testing purposes are not checked.
If you have a feature request or a bug report please post it direct on GitHub.
Update 12.05.2016 (Version 0.95):
– Check CPU, Memory and C: of Controllers
– XenApp: Add values: CPU & Memory and Disk Usage
– XenApp: Option to toggle on/off to show Connected Users
– XenApp: DesktopFree set to N/A because not relevant
If you need a Health Check Script for XenApp Version which are older than XenApp 7.x see http://deptive.co.nz/xenapp-farm-health-check-v2 where it’s an excellent work and the inspiration for my HealthCheck-Scripts!
The code is on GitHub:
https://github.com/sacha81/XA-and-XD-HealthCheck/
For Bug Reports or feature Request please use GitHub, of course you can also contribute on this code!