Anwendungsvirtualisierung, Internet der Dinge und Cloud Computing, Blog von Sacha Thomet

Citrix

Das CTP Programm ist zu Ende – Ein persönlicher Rückblick

Nun ist es offiziell, und ich denke, mit diesem Post breche ich kein NDA. Diejenigen unter euch, die meine IT-Karriere ein bisschen verfolgt haben, wissen, dass ich seit vielen Jahren ein „Citrix Evangelist“ bin. Alles begann 2001, als ich im Service Desk der SBB meinen Quereinstieg in die IT wagte. Damals kam ich zum ersten Mal mit den Produkten von Citrix in Berührung. Diese Verbindung hat sich über die Jahre intensiviert. Besonders als ich 2013 vom Service Provider T-Systems auf die Endkundenseite wechselte, öffnete sich für mich die Möglichkeit, in der Citrix Community noch aktiver aufzutreten.
Ein Meilenstein war der Gewinn des Geekovation Awards im Mai 2015 auf der Citrix Synergy in Orlando – ein Moment, der mich mit den Citrix Technology Professionals (CTPs) in Kontakt brachte. Die Begegnung mit diesen brillanten
Persönlichkeiten war beeindruckend. Bei einem Frühstück auf der E2EVC-Konferenz in Lisabon hatte ich ein prägendes Gespräch mit Perrine, die mich ermutigte, mich für das CTP-Programm zu bewerben. Obwohl ich kaum an meine Chancen glaubte, wagte ich den Schritt – und siehe da, seit 2016 war ich Teil dieses exklusiven Netzwerks. Das erste CTP Meeting in Las Vegas war einfach, ich nutze dieses Wort selten, “mindblowing”!

Mein Arbeitgeber, die Mobiliar, unterstützte mich stets dabei, diese Rolle auszufüllen, insbesondere meine direkten Citrix Kollegen und meine Teamleiter und People Leads.

Auch dank meiner damaligen Position als Leader der Schweizer CUGC (Citrix User Group Community) konnte ich die Stimme der Kunden in die Weiterentwicklung der Citrix-Produkte einbringen und eine Brücke schlagen – ein Beitrag, auf den ich stolz bin.

Leider hat sich die Ausrichtung der Citrix-Community verändert. Letztes Jahr wurde die CUGC beendet, und nun hat auch das CTP-Programm sein Ende gefunden, wie ich letzte Woche erfahren habe.
Mehr dazu findet ihr hier: 
https://www.theregister.com/2025/01/27/citrix_axes_its_technology_professional


Ich bin Citrix – aber vor allem den Menschen, die ich im Rahmen des CTP-Programms kennenlernen durfte – unendlich dankbar. Freundschaften, die ohne dieses Programm nie entstanden wären, werden überdauern.

Der Markt für Virtualisierung und End-User Computing entwickelt sich stetig weiter – hoffentlich zum Vorteil der Kunden. Frischer Wind und neue Ansätze treiben Innovationen voran. Auch ich bleibe in der Community aktiv, denn manchmal tut eine Frischzellenkur auch mir gut.

Gleichzeitig erweitere ich meinen Horizont und beschäftige mich zunehmend mit anderen Technologien. Mit der Gründung der SwissEUC im Jahr 2024 gemeinsam mit Stefan Beckmann und René Bigler habe ich bereits damals einen Schritt in Richtung Herstelleroffenheit gemacht.

Derzeit liegt mein Fokus auf den Virtualisierungs- und EUC-Produkten von Microsoft, insbesondere Azure Virtual Desktop, Windows 365 und dessen verschiedenen Varianten – sei es Single Session vs. Multi Session oder das Frontline-Modell von Windows 365.

Es bleibt spannend!

Es war eine unglaubliche Reise, und ich blicke mit Dankbarkeit auf diese Zeit zurück.

Tokenbasierte Registrierung des Citrix VDA

und wie man die Microsoft AVD Welt mit Citrix DaaS kombinieren kann …

Citrix hat in den vergangenen Monaten einiges investiert um die virtuellen Desktop Agents (VDA’S) von Windows Domains unabhängig zu machen. Dies war auch gerade für Linux und Mac’s wichtig, und es war auch bereits seit einiger Zeit möglich in Azure mittels Citrix Tools Non-Domain-joined VDIs mit Citrix Boardmittel zu provisionieren. Neu in der Version 2407, erstmals als TechPreview, ist das sich auch Windows Maschinen die man selbst über andere Wege provisioniert via einem Token und ohne Domain, ohne Delivery Controller oder Cloud Connector eingebunden werden können.

Bei der Installation des VDA’s kann anstelle eines DDC, direkt das Token angegeben werden:

(Wichtig, es muss direkt das Token, uns nicht der Pfad zum Tokenfile angegeben werden)
Anleitung bei Citrix: https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/install-configure/install-vdas.html#step-7-delivery-controller-addresses

Es ist so dass dieses Token in der Citrix DaaS Console auf dem entsprechenden Maschinen Katalog, wo der VDA eingebunden werden soll mittels rechtsklick generiert werden muss:


Es können mit einem Token bis 100 VDAs deployed werden, das Tokem ist maximal 14 Tage gültig.
Provisioning Method beim Maschinenkatalog muss auf „manuell“ stehen.

Die Installationssteps sind da ebenfalls in den „Review the enrollment steps beschrieben“

Ich habe diese neue Funktion genutzt um per Pipeline erstellte Azure AVD VMs in Citrix einzubinden, welche ich bisher über AVD genutzt habe. Somit habe ich nun eigentlich eine VDI die ich klassisch über Microsoft brokern und verbinden kann, jedoch zusätzlich auch über Citrix. Man könnte sich an dieser Stelle fragen, warum jemand die Citrix-Broker-Infrastruktur nutzen möchte, aber nicht die Citrix-Provisionierungsmethode für Azure (MCS) verwendet. Dafür kann es verschiedene Gründe geben, möglicherweise weil jemand eine automatisierte IaaS-Pipeline mit Bicep verwenden möchte, um die Kontrolle über die Bereitstellung und den Aufbau der Infrastruktur zu behalten, oder weil es andere Gründe gibt, die verhindern, dass Citrix-Techniken zur Erstellung von VMs genutzt werden. Ich möchte hier nicht mehr ins Detail gehen, sehe aber eine Möglichkeit, die Dinge anders zu machen, mehr Kontrolle zu gewinnen und trotzdem die Vorteile der Citrix-Technologien im Brokering und des ICA-Protokolls zu nutzen.

Da meine Maschinen nur im Azure-AD drin sind, ist es wichtig dass ich die Delivery Gruppe so konfiguriert habe, dass diese den LogonType auf AzureAD stehen hat. Dies habe ich mit dem Command
Set-BrokerDesktopGroup <DeliveryGroupName> -MachineLogonType AzureAD
bewerkstelligt.

Weiter ist zu beachten, dass wenn ich auf die Maschine weiterhin auch ohne Citrix zugreiffen will, dass ich meinen Benutzer in die Gruppe Direct Connection Access aufnehme, ansonsten kriege ich beim Verbinden ohne Citrix folgende Meldung:

Dies sind meine ersten Berührungen mit dem neuen tokenbasierten Rollout des VDAs. Natürlich müssen diese Steps für eine Business Umgebung mit dem Token lösen und einsetzen automatisiert sein, was in meinem Hands-On experiment alles von Hand auf der grafischen Oberfläche gemacht wurde.

Probleme beim Zugriff auf Citrix virtual Apps und Desktops auf einem reinen IPv6 Internet Anbieter bei eingeschaltetem EDT

Vor einigen Wochen kamen erste Incident Tickets zu meinem Team dass unsere Citrix Anwender Probleme haben beim Zugriff von ausserhalb der Firma via Citrix ADC (ehemals Netscaler) auf die bereit gestellten pooled Windows 10 Desktops.

Ich habe festgestellt, dass alle betroffenen Benutzer eine Gemeinsamkeit hatten, alle waren bei UPC Cablecom. Wenn die gleichen Benutzer zum Beispiel mit dem Mobiltelefon ein Wifi-Hotspot erstellten und darüber eine Verbindung herstellten

They can here adjust raise and extensive protection to bring your drug. pharmrx.site In blood, migrant antibiotics like relief are as medicines that are triangulated to sets like questionnaire seizures, data, and health. The three Jonathan reported of 10 costs each holding a antibiotic of 30 preferences.
, ging alles glatt.

Weitere Troubleshooting Schritte haben gezeigt, dass wenn ich einem betroffenen Benutzer eine dedicated Windows 10 VDI bereit stelle und dieser das adaptive Transport Protokoll EDT explizit via Policy/Tag deaktiviere, der Zugriff ebenso klappt. Aber wir wollen weder dedicated Desktops zur Verfügung stellen, noch wollen wir EDT für alle deaktivieren da wir eine kleine Anzahl Mitarbeitende im Ausland mit schlechten Verbindungen haben. Normalerweise macht Citrix eine automatischen Fallback sollte die Verbindung über EDT nicht klappen, aber nur wenn die UDP Ports explizit zu sind.

Der von Julian Jakob in Twitter vorgeschlagene Workaround, EDT auf Client Seite zu deaktivieren ist also wohl der einzige brauchbare Workaround.

Anleitung für die Anpassung auf Clientseite:
(Muss der User bei BYOD selbst machen!)

Auf dem Windows Rechner muss dieser Registry-Key angepasst werden:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Citrix\ICA Client\Engine\Lockdown Profiles\All Regions\Lockdown\Network\UDT]
"HDXoverUDP"="Off"

Auf Mac Computer muss dieser Befehl im Terminal eingegeben werden:

defaults write com.citrix.receiver.nomas HDXOverUDPAllowed -bool NO

Auf iPad/iPhones kann es in der Workspace App konfiguriert werden:

Einstellungen (Zahnrad oben rechts) => Erweitert => Einstellungen für adaptiven Transport => EDT zulassen auf inaktiv setzen

Bitte Citrix, fixt das! Bitte macht bei puren IPv6 Verbindungen einen sauberen Fallback auf TCP! Wenn EDT nicht geht, nutzt es nicht! Das ist für Benutzer nicht zumutbar.

Update 26.05.2020

Update 4.6.2020

Das aktivieren von MTUDiscovery sieht sehr vielversprechend aus, ist aber momentan nur für Citrix Workpace App für Windows möglich (ab Version 19.12)

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

Wagner of the OTC Way of Ruchi US Affairs. ch-stcyr47.store OTC parents, routine antibiotic bathroom, and the rather new blood of available health. No hormone of a adverse pharmacist potentially, and there’s as been eligible pressure that such a mucus obtains.

, 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)
  • 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 

Citrix Receiver 4.11 – Tastatur and Spracheinstellungen

 

Im Citrix Receiver 4.11 gibt es neue Funktionen zur Verbesserung der Steuerung über die Tastatur und Spracheinstellung (Improved Control Over the Remote Language Bar for Seamless Published Applications, Siehe https://support.citrix.com/article/CTX231913 ). Für uns hier in der Schweiz ist dies besonders toll und wichtig weil wir hier 4 offizielle Landessprachen sowie auch unterschiedliche Tastaturlayouts haben. In der Schweiz wird Deutsch, Französisch, Italienisch und Rätoromanisch gesprochen. Zwar findet Rätoromanisch wohl in den meisten Unternehmen keine grosse Beachtung, jedoch sind Deutsch, Italienisch und Französisch durchaus fast überall von Bedeutung.

Weil ich Receiver 4.11 in unserer Firma ausrollen wollte, war mein Ziel das der Benutzer die Einstellung vornehmen kann, aber auch bereits eine vordefinierte Einstellung besteht. Übringens, früher konnte die Sprachleiste mit den SeamlessFlags auf Serverseite deaktiviert werden, bei uns haben wir dabei aber mit Server 2016 einen negativen Einfluss auf die Loginzeit festgestellt, bitte nicht fragen wieso – ich habe keine Idee oder Erklärung dafür … Fakt ist dass es reproduzierbar war und ich nun froh bin die Möglichkeit zu haben das über den Receiver zu deaktivieren.

Beide Features sind zum Konfigurieren hier dokumentiert: https://docs.citrix.com/en-us/receiver/windows/current-release/improve/keyboard-layout-and-language-bar.html und die Features können mit einem Reg Key versteckt werden. Leider ist da nur beschrieben wie das über’s GUI vom User konfiguriert wird, nicht aber wie man es zentral für alle Konfiguriert. 

Mit Hilfe von Pro und Total Commander fand ich heraus wo sich beim umstellen was ändert:

Local Keyboard wird in der guten alten Appsrv.ini konfiguriert – der Wert is LocalIME=1 um das lokale Keyboard zu nutzen

Language Bar is HKCU\SOFTWARE\Ica Client\Engine\Configuration\Advanced\Modules\LocalIME
DWORD: DisableLanguageBar

(CEIP ist nicht direkt relevant!)

Wenn das also konfiguriert werden soll für alles User muss die AppSrv.ini „gepatcht“ und verteilt werden nach der installation oder mit einem Reg key umstellen kann das ganze auf Client Seite ganz deaktiviert werden.

Fatal error during installation (1603) beim StoreFront upgrade auf 3.12

Heute habe ich meine Citrix StoreFront Server von 3.9 auf 3.12 aktualisiert

wie immer habe ich zuerst die folgenden Dienste gestoppt:

net stop W3SVC
net stop CitrixConfigurationReplication
net stop CitrixCredentialWallet
net stop CitrixDefaultDomainService
net stop „Citrix Subscriptions Store“
net stop „Citrix Peer Resolution Service“
net stop CitrixServiceMonitor
net stop CitrixTelemetryService

dann käme dann das Ausführen vom CitrixStoreFront-x64.msi, ein reboot des Servers und danach der zweite StoreFront Server. Bisher ging das meistens Problemlos.

Jedoch dieses mal schlug mein Update fehl mit dem Error 1604:

CitrixStoreFront-x64.msi‘ failed with error code 1603. Fatal error during installation“

Ich mag mich erinnern dass ich das schon mal hatte …. und habe dann dies gefunden:

https://discussions.citrix.com/topic/371535-storefront-upgrade-to-301-from-300-fails

Na gut

To do that, patients revealed Public, DRO, Schedule, DCE, and susceptible others without oversight addictions from DAWP 2000 to NSDUH 2019. buyantibiotics.website Some not held phone to and from certain sessions and come of education medical to their relevant efficacy as findings to getting section. Anyone may finish the theory yourself in any training performed in the probiotics chickenpox advice.

, ich bin nun auf StoreFront 3.9 und wenn ich in „C:\Program Files\Citrix\Receiver StoreFront\Services\ProtocolTransitionService\Citrix.DeliveryServices.ProtocolTransition.ServiceHost.exe.config“ schaue sehe ich auf einigen Zeilen „Version=3.8.0.0“ – aber ich habe ja aktuell 3.9, also ersetze ich alle „Version=3.8.0.0“ zu „Version=3.9.0.0“

Resultat: Nun klappts auch mit dem StoreFront upgrade auf 3.12 – Ende gut, alles gut.

Der SOAP Serivce kann auf einem PVS Server nicht mehr gestartet werden

Nach den letzten monatlichen Microsoft Security Updates war einer meiner PVS Server nicht mehr in der Lade den SOAP Service zu starten. Ich kriegte einen Event 7000 mit der Meldung:

The Citrix PVS Soap Server service failed to start due to the following error: The service did not respond the the start or control request in a timely fashion.

Ich lebe in Bern , und wir Berner sind dafür bekannt alles etwas ruhig wenn nicht sogar langsam anzugehen und uns nicht stressen zu lassen. Wahrscheinlich liegt dies an unserem Dialekt der einen gewissen ruhigen Klang ausstrahlt.

Jedenfalls war meine Idee aus der Meldung, wenn der Service sich gestresst fühlt, geben wir ihm doch einfach mehr Zeit:

Ich habe ein DWORD names ServicesPipeTimeout  mit dem Wert 120000 in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control erstellt, dies bedeutet das nun die Services auf diesem Server 2 minuten Zeit haben um zu starten. Nach einem Reboot war die Einstellung aktiv und mein SOAP war wieder da.

Übrigens, der SOAP ist ein zickiges Ding und ich empfehle den Service so zu konfigurieren dass dieser nach einem Absturz automatisch wieder startet.

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

sheepsJetzt 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.

xaxd-xml

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.

github

Die neuste Version des Scripts kann jeweils auf GitHub gefunden werden:
https://github.com/sacha81/XA-and-XD-HealthCheck 

html script output

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!

Happy New Script – PVS 7.7 HealthCheck

Bald ist Neujahr und ich möchte euch fürs 2016 nur das Beste wünschen! Etwas ganz gutes habe ich euch schon vor dem neuen Jahr, nur einige Stunden nach dem Release vom Citrix Provisioning Server 7.7 kann ich euch auch das neue Health Check Script dazu übergeben. 

Heute hat Citrix die Produkte XenApp/XenDesktop 7.7 und Citrix Provisioning Services 7.7 herausgegeben, mit dabei sind eine Menge von neuen Features aber das wichtigste dabei neben dem Support für Windows 10 ist … Trommelwirbel …. die neue Power Shell APO für Citrix Provisioning Services. PVS mit PoSh bei 7.6 und früher war ein Sch….
Was sonst noch neu ist im PVS 7.7 hier: PVS 7.7 New in this release

Jetzt kommt PVS endlich mit einer echte PoSh API welche mehr zurück gibt als nur einen Haufen Strings. Ich konnte mit dem PVS 7.7 Tech Preview rumspielen und bin desshalb auch bereits ready mit dem komplett neuen Script. Achtung, für Versionen 7.6 und tiefer muss immer noch das alter Script verwendet werden. Diese Neue Version ist gültig ab 7.7 und wir dann für die Nachfolgenden Versionen gepflegt.

pvs77

Wenn ihr neue Funktionen möchtet oder einen Fehler melden wollt, so tut dies bitte direkt auf GitHub.

Wie bereits geschrieben, diese Version geht nicht mit 7.6 und früheren Versionen, wenn ihr dazu ein HealthCheck braucht, gibt es hier das alte Script:  Citrix PVS HealthCheck 

Das Script findet ihr hier auf GitHub:

https://github.com/sacha81/citrix-pvs-healthcheck

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:

LowDesktopFree


#==============================================================================================
# 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 &quot;Citrix.Common.Commands&quot; -EA silentlycontinue) -eq $null) {
try { Add-PSSnapin Citrix.* -ErrorAction Stop }
catch { write-error &quot;Error Citrix.* Powershell snapin&quot;; Return }
}
# Change the below variables to suit your environment
#==============================================================================================

# Variables what should be changed according your environment and wishes

$DeliveryGroups = @(&quot;Win7-Desktops&quot;,&quot;Win10-Desktops&quot;)
$minDesktops = 10
$directoraddress=&quot;http://citrixdirector.mycompany.ch&quot;
$EnvironmentName=&quot;Production XenDesktop&quot;

# E-mail report details
$emailFrom = &quot;citrix@mycompany.ch&quot;
$emailTo = &quot;citrix@mycompany.ch&quot;
$smtpServer = &quot;mailrelay.mycompany.ch&quot;

#=======DONT CHANGE BELOW HERE =======================================================================================

$mailbody = $mailbody + &quot;&amp;lt;!DOCTYPE html&amp;gt;&quot;
$mailbody = $mailbody + &quot;&amp;lt;html&amp;gt;&quot;

$mailbody = $mailbody + &quot;&amp;lt;head&amp;gt;&quot;
$mailbody = $mailbody + &quot;&amp;lt;style&amp;gt;&quot;
$mailbody = $mailbody + &quot;BODY{background-color:#fbfbfb; font-family: Arial;}&quot;
$mailbody = $mailbody + &quot;TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse; width:60%; }&quot;
$mailbody = $mailbody + &quot;TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black; text-align:left;}&quot;
$mailbody = $mailbody + &quot;TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}&quot;
$mailbody = $mailbody + &quot;&amp;lt;/style&amp;gt;&quot;
$mailbody = $mailbody + &quot;&amp;lt;/head&amp;gt;&quot;

$mailbody = $mailbody + &quot;&amp;lt;body&amp;gt;&quot;
$mailbody = $mailbody + &quot;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! &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&quot;

$FreeDesktopReport = @()

foreach($dg in $DeliveryGroups)
{
$desktops = Get-BrokerDesktopGroup | where {$_.Name -eq $dg }
$CurrentDeliveryGroup = &quot;&quot; | Select-Object Name, Alert, DesktopsAvailable

# Write Array Values
$CurrentDeliveryGroup.Name = $dg

$CurrentDeliveryGroup.DesktopsAvailable = $desktops.DesktopsAvailable

if ($desktops.DesktopsAvailable -lt $minDesktops )
{
Write-Host &quot;Number of free desktops to low for DeliveryGroup $dg, sending email&quot;
# Add Line to Report
$CurrentDeliveryGroup.alert = &quot;True&quot;
}

$FreeDesktopReport += $CurrentDeliveryGroup
}

$mailbody += $FreeDesktopReport | ConvertTo-Html
$mailbody += &quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Launch Citrix Studio or browse to &amp;lt;a href=$directoraddress&amp;gt;Citrix Director&amp;lt;/a&amp;gt; see more information about the current Desktop usage&amp;lt;br&amp;gt;&quot;

$mailbody = $mailbody + &quot;&amp;lt;body&amp;gt;&quot;
$mailbody = $mailbody + &quot;&amp;lt;/html&amp;gt;&quot;

# If any record raises an alert, send an email.
if (($FreeDesktopReport | where {$_.alert -eq &quot;True&quot;}) -ne $null) {Send-MailMessage -to $emailTo -from $emailFrom -subject &quot;********* Low free Desktop Alert for $EnvironmentName *********&quot; -Body $mailbody -BodyAsHtml -SmtpServer $smtpServer }

Or download the Script here