Desktop Director – Installation & Konfiguration
In einigen Umgebungen macht es Sinn, den Desktop Director auf einem dedizierten Server zu installieren. Im Folgenden findet ihr eine Anleitung zur Installation und Konfiguration.
Installation
Mit einer einzigen Kommandozeile lässt sich der Director sowie seine abhängigen Rollen/Features/Komponente installieren:
<ISO-Drive>\x64\XenDesktopSetup\XenDesktopServerSetup.exe /components DESKTOPDIRECTOR /configure_firewall /noreboot /quiet /logpath C:\Logs
Sind die abhängigen Rollen/Features/Komponenten nicht bereits im Vorfeld installiert worden, benötigt der Server während der Installation einen Reboot (zu erkennen daran, dass in der CLI wieder Eingaben gemacht werden können) und auch wenn nach der erneuten Anmeldung das CLI Fenster des Installers nur kurz aufgeht und sich wieder schließt, läuft im Hintergrund die Installation weiter. Den aktuellen Status der Installation kann man sich fortlaufend anzeigen lassen über die PowerShell (in diesem Beispiel lasse ich mir immer die letzten 10 Zeilen des Logs ausgeben):
Get-Content 'C:\Logs\Citrix\XenDesktop Installer\XenDesktop Installation.log' -Tail 10 -Wait
Mit dem Eintrag <Datum/Uhrzeit> : XenDesktopSetup:The process is complete.
ist die Installation abgeschlossen.
Konfiguration: Discovery Adressen
Standardmäßig wird bei einer Installation des Directors per CLI immer localhost als zu verwendender Delivery Controller eingetragen. Ist der Desktop Director auf einem dedizierten Server installiert worden, muss im IIS die Konfiguration an die tatsächlichen Desktop Controller angepasst werden.
Import-Module WebAdministration Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings/add[@key='Service.AutoDiscoveryAddresses']" -name "value" -value "<Site-Controller-FQDN>"
Sind in der Site mehrere Controller vorhanden, sind diese fortlaufend durch Komma getrennt anzugeben. Gleiches gilt auch, wenn man Controller aus mehreren Sites einbinden möchte.
Auch XenApp 6.5 Farmen lassen sich einbinden. Der Parameter hierfür ist jedoch standarmäßig nicht vorhanden und muss dementsprechend nicht geändert, sondern angelegt werden. Zudem ist hierfür ein wenig Vorkonfiguration erforderlich (siehe https://support.citrix.com/article/CTX209513).
Import-Module WebAdministration Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings" -name "." -value @{key='Service.AutoDiscoveryAddressesXA';value='<Farm-Controller-FQDN>'}
Konfiguration: HTTPS Binding
Als nächsten Schritt stellt man den Director auf HTTPS um. Voraussetzung dafür ist, dass bereits ein gültiges Server Zertifikat im Zertifikatsspeicher der lokalen Maschine vorliegt. Subject ist der Servername und es gibt nur ein Zertifikat, welches den Servernamen im Subject hat. In den folgenden Zeilen lese ich den Thumbprint des Zertifikats aus, erstelle ein einfaches HTTPS-Web-Binding, erstelle ein SSL-Binding zwischen dem Zertifikat und dem HTTPS-Web-Binding und lösche zu guter Letzt das standardmäßige HTTP-Web-Binding.
Import-Module WebAdministration $CertSubject = <Server-Name> $CertThumb = (Get-ChildItem cert:\LocalMachine\MY | Where-Object { $_.Subject -like "*$CertSubject*" } | Select-Object -First 1).Thumbprint New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https Get-Item cert:\LocalMachine\MY\$CertThumb | New-Item -Path IIS:\SslBindings\0.0.0.0!443 Remove-WebBinding -Name "Default Web Site" -Protocol http
Konfiguration: Director Default Webpage
Um das IIS Virtual Directory des Desktop Directors zur Standardwebseite innerhalb der IIS Site zu machen, sind 3 Schritte erforderlich.
- Erstellen einer
director.html
im IIS Root Directory (standard: C:\inetpub\wwwroot). - Entfernen eines
director.html
Eintrags in der Liste der Default Documents, falls er bereits existiert. - Hinzufügen eines
director.html
Eintrags in die Liste der Default Documents mit Index Nummer 0 (Erster Wert in der Default Documents Liste)
Die director.html
ist schnell erstellt mit dem Set-Content PowerShell Cmdlet:
$content = @" <script type="text/javascript"> <!-- window.location="<Redirect-URL>"; // --> </script> "@ Set-Content "C:\inetpub\wwwroot\director.html" -value ("$content") -Encoding Default
Für die Variable <Redirect-URL>
gilt:
HTTP Verbindung: window.location="/Director"
HTTPS Verbindung: window.location="https://<Servername>/Director";
Als nächstes prüfen wir, ob die director.html
bereits in der Liste der Default Documents eingetragen ist und entfernen diese gegebenenfalls:
Import-Module WebAdministration Get-WebConfigurationProperty -Filter "//defaultDocument" -PSPath "IIS:\sites\Default Web Site" -Name files.collection | Where-Object { $_.value -eq "director.html" } Remove-WebConfigurationProperty -Filter "//defaultDocument" -PSPath "IIS:\sites\Default Web Site" -Name files -atElement @{value="director.html"} -ErrorAction Stop
Als letzten Schritt fügen wir die director.html als obersten Wert in die Default Documents Liste ein:
Import-Module WebAdministration Add-WebConfiguration -Filter "//defaultDocument/files" -PSPath "IIS:\sites\Default Web Site" -AtIndex 0 -Value @{value="director.html"} iisreset.exe
Konfiguration: Domain-Feld im Anmeldefenster vorkonfigurieren und/oder komplett ausblenden
Befindet sich der Desktop Server in einer Single-Domain/Single-Forest Umgebung, lässt sich das Domain Feld im Anmeldefenster vorkonfigurieren und die Eingaben für den Director-Benutzer reduzieren. Ist das Feld vorkonfiguriert lässt es sich zudem auch ausblenden. Hierzu öffnet man die Datei C:\inetpub\wwwroot\Director\LogOn.aspx
und bearbeitet diese als Administrator.
Zum Vorkonfigurieren sucht man nach dem Tag <asp:TextBox ID="Domain"
und fügt in den Tag die Parameter Text="<Domain-Name>" readonly="true"
ein wie im Bild zu sehen. Für den Wert <Domain-Name>
ist natürlich der Name der eigenen Domain anzugeben.

Da mit obiger Konfiguration das Domain Feld per readonly
Parameter für den Director-Benutzer sowieso nicht änderbar ist, blendet man es am Besten auch gleich aus. Hierzu sucht man nach dem Tag <asp:Label ID="DomainLabel"
und fügt die Tags <div style='display:none'
und </div>
an den beiden auf dem Bild gelb markierten Positionen ein.

Im Ergebnis sieht die Anmeldeseite nach den Anpassungen dann wie folgt aus:

Konfiguration: SSL Check deaktivieren
Standardmäßig erscheint an der Anmeldeseite beim Aufruf des Directors eine Nachricht You are not using a secure connection, wenn die Seite nicht über SSL aufgerufen wurde. Um dies zu deaktivieren muss in der Datei C:\inetpub\wwwroot\Director\web.config
der Wert für den Parameter UI.EnableSslCheck auf false gesetzt werden.
Import-Module WebAdministration Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings/add[@key='UI.EnableSslCheck']" -name "value" -value "false"
Konfiguration: Activity Manager deaktivieren
Laut Citrix:
By default, the Activity Manager in Director displays a list of all running applications for a user’s session. To protect the privacy of users and the applications they are running, you can disable the Applications tab from listing running applications.
Um den Activity Manager zu deaktivieren muss in der Datei C:\inetpub\wwwroot\Director\web.config
der Wert für den Parameter UI.TaskManager.EnableApplications auf false gesetzt werden.
Import-Module WebAdministration Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings/add[@key='UI.TaskManager.EnableApplications']" -name "value" -value "false"
Multi-Forest Umgebungen und große Active Directories
Laut Citrix:
When searching user accounts, the search process is either slow or it fails within Desktop Director.
Dieses Verhalten tritt in großen AD Umgebungen oder Umgebungen mit mehreren Forests auf. Grund dafür ist, dass der Director standardmäßig alle Global Catalogs im AD Forest per LDAP durchsucht. In großen Umgebungen dauert diese Abfrage sehr lange oder läuft auf einen Time-Out.
Um diese Verhalten zu ändern muss in der Datei C:\inetpub\wwwroot\Director\web.config
ein neuer Parameter Connector.ActiveDirectory.ForestSearch hinzugefügt und auf false gesetzt werden.
Import-Module WebAdministration Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings" -name "." -value @{key='Connector.ActiveDirectory.ForestSearch';value='false'}
Soll der Director trotz der o.g. Thematik mehr als die aktuelle Domain durchsuchen, muss in der Datei C:\inetpub\wwwroot\Director\web.config
ein neuer Parameter Connector.ActiveDirectory.Domains hinzugefügt und die entsprechenden Domains hinterlegt werden.
Import-Module WebAdministration Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings" -name "." -value @{key='Connector.ActiveDirectory.Domains';value='<Domain-1>,<Domain-2>,<Domain-n>'}
Konfiguration: Ansichtsfilter
Innerhalb des Citrix Directors lassen sich Filter für Ansichten setzen und auch für die Weiterverwendung abspeichern.

Standardmäßig werden die dazugehörtigen Daten in C:\Inetpub\wwwroot\Director\UserData
abgelegt; jeder Director-Benutzer kann dabei seine eigenen Filter haben. Solange es in der Infrastruktur nur einen Director Server gibt, ist es kein Problem, wenn diese Daten lokal auf dem Server gespeichert sind. Anders verhält es sich, wenn z.B. 2 Director Server existieren, die loadgebalanced werden, da dann, jenachdem, auf welchem Server der Benutzer gerade verbunden ist, die Filter entweder da sind oder nicht, bzw. mehrfach angelegt werden müssen. Um dies zu umgehen, lässt sich der Speicherort für die Filter zentral auf ein Fileshare umkonfigurieren.
Hierzu legen wir auf Laufwerk C:\ eines File-Servers einen Ordner Director\UserSettings an und den Root-Ordner Director als Director frei. Im Anschluss gibt man jedem Director-Server Computer-Objekt mindestens Modify-Rechte auf dem Ordner (in diesem Beispiel 2 Server).
New-Item -Path C:\Director -ItemType Directory -Force New-Item -Path C:\Director\UserSettings -ItemType Directory -Force New-SmbShare -Name "Director" -Path "C:\Director" -FullAccess "Everyone" $ACLSV1 = Get-Acl "C:\Director" $ARSV1 = New-Object System.Security.AccessControl.FileSystemAccessRule("<Domain>\<Director-Servername-1>$","Modify","ContainerInherit,ObjectInherit","None","Allow") $ACLSV1.SetAccessRule($ARSV1) Set-Acl "C:\Director" $ACLSV1 $ACLSV2 = Get-Acl "C:\Director" $ARSV2 = New-Object System.Security.AccessControl.FileSystemAccessRule("<Domain>\<Director-Servername-2>$","Modify","ContainerInherit,ObjectInherit","None","Allow") $ACLSV2.SetAccessRule($ARSV2) Set-Acl "C:\Director" $ACLSV2
Im Anschluss muss auf jedem Director-Server der Pfad für die User Settings in den IIS Einstellungen angepasst werden:
Import-Module WebAdministration Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings/add[@key='Service.UserSettingsPath']" -name "value" -value "\\<FileServer-Name>\Director\UserSettings"
Quellen:
https://support.citrix.com/
https://www.carlstalhood.com/
Weiterführende Links:
https://support.citrix.com/article/CTX227936
https://support.citrix.com/article/CTX139896
https://support.citrix.com/article/CTX223907
https://support.citrix.com/article/CTX139382