XenDesktop: Eigene Icons im Storefront

Es ist im XenDesktop natürlich möglich, die recht langweiligen Standard-Icons, welche für die Desktops im Storefront angezeigt werden, auszutauschen. Dies wird allerdings nicht im Storefront gemacht sondern via PowerShell auf dem DDC.

sf_icon

Voraussetzung hierfür ist es eine Icon-Datei zu haben, in welcher die Größen 256, 128, 64, 48, 32 und 24 Pixel, jeweils Lang und Breit, vorhanden sind. Hierfür gibt es diverse Websites die diese Convertierung aus einer Bilddatei heraus ermöglichen wie z.B. http://converticon.com/.

Diese .ico Datei wird dann auf einem DDC abgelegt und mittels der PowerShell importiert:
Add-PSSnapin Citrix.*
Get-CtxIcon -FileName 'C:\Temp\Win8.ico' | New-BrokerIcon
Set-BrokerDesktopGroup -Name Win7Group -IconUid 1004

Die IconUid ist natürlich durch die nach dem vorherigen Befehl angezeigt zu ersetzen. Dieses Icon ist dann in der Datenbank zuhause und steht allen DDCs und natürlich auch Storefronts zur Verfügung, eine Wiederholung pro DDC ist nicht nötig.

Auf diese Weise lässt sich schnell und leicht etwas Abwechslung in die Umgebung bringen.

Netscaler Gateway: Customizing SmartAccess

Nach dem Artikel zum Anpassen der Beschreibungen vom CAG Logon Fenster hier noch ein paar Anpassungen um die Optionen vom SmartAccess zu beschränken.

Hierbei werden einmal Auswahlmöglichkeiten beschränkt, deren Beschreibung geändert und im Clientless VPN der Tab für Dateifreigaben ausgeblendet sowie die eigenen Bookmarks entfernt.
Getestet mit Netscaler 10.5 Build 50.9.nc

Netscaler Gateway: Customizing SmartAccess weiterlesen

Netscaler Gateway: Customizing

Will man nur ein paar Kleinigkeiten am Design der Gateway Logon Page ändern, wie z.B. die Beschriftung der Password-Felder, geht das sehr gut indem man rewrite-Regeln einbaut. Damit erspart man sich die ganze Page als Custom Design implementieren zu müssen und es ist über Reboots und Upgrades persistent.

Ein Beispiel, getestet mit Netscaler 10.1:
add rewrite action AD_replace_rewrite_action replace_all "http.RES.BODY(120000).SET_TEXT_MODE(ignorecase)" "\"AD Password\'\"" -pattern "\"Password\"" -bypassSafetyCheck YES -refineSearch q/extend(50,50).REGEX_SELECT(re![ ]*\'[ ]*\+[ ]*_\(\"Password\"\)[ ]*!)/

add rewrite action OTP_replace_rewrite_action replace_all "http.RES.BODY(120000).SET_TEXT_MODE(ignorecase)" "\"Token Code:\'\"" -pattern "\"Password2\"" -bypassSafetyCheck YES -refineSearch q/extend(50,50).REGEX_SELECT(re![ ]*\'[ ]*\+[ ]*_\(\"Password2\"\)[ ]*!)/

add rewrite action AD_delete_rewrite_action delete_all "http.RES.BODY(120000).SET_TEXT_MODE(ignorecase)" -pattern "document.write(\' 1\');" -bypassSafetyCheck YES

add rewrite policy AD_rewrite_pol "http.req.url.path.endswith(\"vpn/login.js\")" AD_replace_rewrite_action

add rewrite policy OTP_rewrite_pol "http.req.url.path.endswith(\"vpn/login.js\")" OTP_replace_rewrite_action

add rewrite policy AD_delete_pol "http.req.url.path.endswith(\"vpn/login.js\")" AD_delete_rewrite_action

bind rewrite global AD_rewrite_pol 80 NEXT -type RES_OVERRIDE
bind rewrite global OTP_rewrite_pol 90 NEXT -type RES_OVERRIDE
bind rewrite global AD_delete_pol 100 NEXT -type RES_OVERRIDE

Statt einem globalen Binding kann man natürlich auch pro vServer unterschiedliche Anpassungen vornehmen.

Wenn die Anpassungen nicht sofort sichtbar werden ruhig mal prüfen ob der Netscaler Caching aktiviert hat, dies hat mich einige Minuten Fehlersuche gekostet… 😉

Exchange 2013 DAG – Fehlermeldungen

Beim Einrichten der Exchange 2013 DAG sind mir ein paar Fehlermeldungen entgegen gesprungen:

– DNS Name / FQDN kann nicht aufgelöst werden:
An Active Manager operation failed with a transient error. Please retry the operation. Error: The fully qualified domain name for node '' could not be found.

– Computerkonto ist aktiv:
A computer account named 'Exchange-DAG01' already exists and is enabled. The account must be disabled in order to be used by the database availability group.

– Zugriff verweigert:
A server-side database availability group administrative operation failed. Error The operation failed. CreateCluster errors may result from incorrectly configured static addresses. Error: An error occurred while attempting a cluster operation. Error: Cluster API ‘”CreateCluster() failed with 0×5. Error: Access is denied”‘ failed..

Exchange 2013 DAG – Fehlermeldungen weiterlesen

Exchange 2010 SP2 Installation – AuthorizationManager Fehler

Bei der Installation von Exchange 2010 SP2 kann es vorkommeen das das Exchange Setup – natürlich nachdem die Exchange Daten entfernt wurden – einen Fehler auswirft wonach der „AutorizationManager Check“ fehlgeschlagen ist: „$error.Clear(); & $RoleBinPath\ServiceControl.ps1 EnableServices Critical “ was run: „AuthorizationManager check failed.“. Hier ist ein vor der Installation durchgeführter Snapshot oder ähnliches hilfreich, an sonsten geht es mit dem Desaster Recovery weiter.

Um das Problem zu beheben müssen alle PowerShell Execution Policys die per GPO verteilt werden (MachinePolicy und UserPolicy) auf „undefined“ stehen, in diesem Beispiel ist es nicht der Fall:

PS H:\> Get-ExecutionPolicy -list

Scope ExecutionPolicy
----- ---------------
MachinePolicy Unrestricted
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned

Ist dies nicht der Fall den Exchange entweder in eine OU verschieben in welcher die GPO nicht angewendet wird oder die Einstellung in der GPO (Computerkonfiguration – Administrative Vorlagen – Windows-Komponenten – Windows PowerShell) deaktivieren und per „gpupdate /force“ angewendet. Daraufhin folgenden Befehl ausführen:

PS H:\> Set-ExecutionPolicy undefined

Hiermit werden die Policys entsprechend zurückgesetzt und sollten wie folgt aussehen:

PS H:\> Get-ExecutionPolicy -list

Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined

Nun lässt sich das Setup problemlos durchführen.

Sollte jetzt ein Fehler auftauchen wonach Skripte garnicht mehr ausgeführt werden können lassen sich diese wie folgt genehmigen:

PS H:\> Set-ExecutionPolicy Unrestricted
PS H:\> Get-ExecutionPolicy -list

Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Unrestricted

Damit sollte die Installation letztendlich gelingen. Hintergrund scheint hierbei das beenden der WMI Dienste während der Installation zu sein. Sind diese deaktiviert lassen sich GPO Einstellungen nicht mehr anwenden und das Setup fällt bei der bestimmung der anzuwendenden Policy auf die Nase.

Bei dem Upgrade einer DAG ist außerdem dieser Microsoft Artikel zu beachten.