Andreas Mariotti

In eigener Sache

Heute mal etwas in eigener Sache. Neben diesem Blog mit Bezug zu meinen beruflichen IT Themen habe ich auch meine private Webseite zum Thema Fotografie, die sich inzwischen etwas mit Leben gefüllt hat. Ich würde mich deshalb freuen ihr schaut auch dort mal vorbei, und zwar direkt unter www.mariotti.de und unter www.bluesbrothers-tribute.show dürft ihr auch mal vorbeischauen

photo_page

Andreas Mariotti

Citrix Storefront 2.x Anpassungsmöglichkeiten über web.config

Storefront

Aktivieren Schaltfläche für die automatische Konfiguration entfernen:
Ändern Sie hierzu in der „C:\inetpub\wwwroot\Citrix\[Store]Web\web.config“  den Eintrag
receiverConfiguration enabled=”true”
auf
receiverConfiguration enabled=”false”

 

Automatischen Verbindungsaufbau zu Desktops deaktivieren:
Ändern Sie hierzu in der „C:\inetpub\wwwroot\Citrix\[Store]Web\web.config“  den Eintrag
autoLaunchDesktop=“true“
auf
autoLaunchDesktop=“false“

 

Apps statt Desktop Ansicht als Standard voreinstellen:
Ändern Sie hierzu in der „C:\inetpub\wwwroot\Citrix\[Store]Web\web.config“  den Eintrag
uiViews …… defaultView=”desktops
auf
uiViews …… defaultView=”apps”

 

Apps oder Desktop Ansicht entfernen wenn nur eine von beiden genutzt wird:
Ändern Sie je nachdem welche Ansicht sie entfernen wollen in der „C:\inetpub\wwwroot\Citrix\[Store]Web\web.config“  den Eintrag
showDesktopsView=“true“
auf
showDesktopsView=“false“
oder
showAppsView=“true“
auf
showAppsView=“true“

 

Trennen und Verbinden Schaltfläche im Menü anzeigen:
Ändern Sie hierzu in der „C:\inetpub\wwwroot\Citrix\[Store]Web\web.config“  den Eintrag
ShowReconnectAtLogon=”false”
zu
ShowReconnectAtLogon=”true”
und
ShowDisconnectButton=”false”
zu
ShowDisconnectButton=”true”

 

Beim Storefront Abmeldung die ICA Verbindung abmelden oder bestehen lassen statt sie zu trennen :
Ändern Sie hierzu in der „C:\inetpub\wwwroot\Citrix\[Store]Web\web.config“  den Eintrag
logoffAction=“disconnect“
auf
logoffAction=“terminate“
oder auf
logoffAction=“none“

 

HTML5 Receiver in bestehende Tab statt neuer Tab öffnen:
Ändern Sie hierzu in der „C:\inetpub\wwwroot\Citrix\[Store]Web\web.config“  den Eintrag
singleTabLaunch=“false“
auf
singleTabLaunch=“true“

 

Sitzungstimeout konfigurieren:
Ändern Sie hierzu in der „C:\inetpub\wwwroot\Citrix\[Store]Web\web.config“  die Eintrag
authentication tokenLifeTime=“08:00:00″
bzw.
sessionState timeout=“20″
Der erste Eintrag stellt die Sitzungsdauer dar, der zweite Parameter bestimmt das Timeout bei Inaktivität (in Minuten).

 

Andreas Mariotti

Analyse bei langsamer Windows-Anmeldung

In XenApp, Remote Desktop oder VDI Umgebung ist man besonders um schnelle Anmeldezeiten bemüht.  Oft sind die Anmeldezeiten deutlich länger als gewünscht. Möglich Gründe können z.B. Roaming Profiles, Loginskripte, Gruppenrichtlinie, Drucker, Netzwerkprobleme, Hardwareproblem, etc. sein.

Um diesbezüglich zu optimieren gilt es herauszubekommen welcher Vorgang bei der Anmeldung besonders viel Zeit benötigt. Wenn man das weiß kann man gezielt Gegenmaßnahmen vornehmen.

Unter Windows XP und Windows 2003 gibt es hierzu die UserEnvDeg Protokollierung, diese wird hier jedoch näher besprochen, weitere Details würden Sie  unter folgender URL finden: http://support.microsoft.com/kb/221833/

Für neuere Windowsversionen wie z.B. Windows 7 & 8 und Windows Server 208 R2 & 2012 gibt es eine Vielzahl von Analysemöglichkeiten. Den einfachste Überblick welcher Vorgang bei der Anmeldung welche Zeit benötigt kann man sich mit dem Windows Performance Toolkit  (Kurz WPT) verschaffen. Gehen Sie hierzu wie folgt vor:

  1. Installieren Sie das Windows Performance Toolkit auf dem betroffenen System, es ist Bestandteil des Windows SDK bzw. ADK und Sie erhalten es über folgende URL für Windows 7/2008:  http://msdn.microsoft.com/en-US/performance/cc752957.aspx und für Windows 8 / 2012 unter: http://msdn.microsoft.com/en-us/performance/cc825801.aspx
  2. Melden Sie sich als Administrator an und führen Sie folgende Befehlszeile aus um die Aufzeichnung eines Anmeldevorgangs zu starten:xperf -on base+latency+dispatcher+NetworkTrace+Registry+FileIO -stackWalk CSwitch+ReadyThread+ThreadCreate+Profile -BufferSize 128 -start UserTrace -on „Microsoft-Windows-Shell-Core+Microsoft-Windows-Wininit+Microsoft-Windows-Folder Redirection+Microsoft-Windows-User Profiles Service+Microsoft-Windows-GroupPolicy+Microsoft-Windows-Winlogon+Microsoft-Windows-Security-Kerberos+Microsoft-Windows-User Profiles General+e5ba83f6-07d0-46b1-8bc7-7e669a1d31dc+63b530f8-29c9-4880-a5b4-b8179096e7b8+2f07e2ee-15db-40f1-90ef-9d7ba282188a“  -BufferSize 1024 -MinBuffers 64 -MaxBuffers 128 -MaxFile 1024
  3. Bleiben Sie als Administrator angemeldet, und melden Sie sich nun zusätzlich mit dem Benutzer an für den Sie den Anmeldevorgang protokollieren wollen.
  4. Sobald die Benutzer fertig angemeldet ist führen Sie mit diesem folgenden Befehl aus um die Aufzeichnung zu beenden (Hinweis: Dass der stop Parameter zweimal vorkommt ist Absicht und kein Tippfehler):xperf -stop -stop UserTrace -d merged.etl
  5. Die aufgezeichnete „merged.etl“  Datei lässt sich nun mittels des „Windows Performance Analyzer“ (xperview) laden und analysieren. Für eine erste Analyse ist die „Process Lifetime“ Ansicht besonders interessant, hier sehen Sie welche Prozesse bei der Anmeldung wann gestartet und beendet wurde. Halten Sie hier Ausschau nach Prozessen mit langer Laufzeit während des Anmeldevorgangs.
XPerViewProcessLifetime

XPerViewProcessLifetime

 

Neben der allgemeinen Analyse welcher Prozess welche Zeit beim Anmeldevorgang benötigen kann man für die bei der Anmeldung beteiligten Prozesse auch noch eine erweiterte  Protokollierung aktivieren, hier einige Beispiele:

  1. Werden weitere Details Gruppenrichtlinienverarbeitung benötigt kann durch folgenden Registrykey ein detailliertes Logfile (C:\Windows\debug\UserMode\gpsvc.log) erzeugt werden:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Diagnostics]
    „GPSvcDebugLevel“=dword:00030002
  2. Werden weitere Details zur Windowsanmeldung benötigt  kann durch folgenden Registrykey ein detailliertes Logfile (C:\Windows\security\logs\winlogon.log) erzeugt werden:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions\{827D319E-6EAC-11D2-A4EA-00C04F79F83A}]
    „ExtensionDebugLevel“=dword:00000002
  3. Werden weitere Details zur Netzwerkanmeldung benötigt  kann durch folgenden Registrykey ein detailliertes Logfile (C:\Windows\debug\netlogon.log) erzeugt werden:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
    „DBFlag“=dword:2080ffff

 

Andreas Mariotti

Automatische Citrix StoreFront 2.0 Installation

In meinem letzten Beitrag habe ich mich mit der automatischen Installation von XenDesktop 7 beschäftigt, heute möchte ich dies fortführen und eine Möglichkeit aufzeigen wie man das zugehörige Citrix StoreFront 2.0 ebenfalls automatisch installiert, incl. des Einrichten eines ersten Stores und Anbindung an eine Citrix Farm.

Die offizielle Citrix Dokumentation hierzu fällt leider recht schwach aus, es wird lediglich die eigentliche Installation der Setup.exe per Kommandozeilenparameter erklärt, jedoch nicht das Einrichten eines Stores und das anbinden einerFarm, welches jedoch einfach per PowerShell möglich ist. Der hierzu benötigte und nicht dokumentierte Citrix PowerShell Befehl lautet Set-DSInitialConfiguration. Um ihn verwenden zu können muss zuvor das ImportModules.ps1 Skript aus dem StoreFront Scripts Ordner ausgeführt werden.

Abschließen noch der Hinweis, es empfiehlt sich, dass der IIS bereits voran installiert ist und zwar inklusive eingerichtetem SSL, dies erspart nachträglich StoreFront Konfigurationsschritte. Wie das geht kann man in meinem Beitrag SSL am IIS automatisch per Skript einrichten nachlesen.

Hier nun mein beispielhaftes PowerShell Skript:

# Install StoreFront setup including the Citrix Clients
C:\Temp\CitrixStoreFront-x64.exe -silent -WINDOWS_CLIENT "C:\Temp\CitrixReceiver.exe" -MAC_CLIENT "C:\Temp\CitrixReceiver.dmg"

# Import Citrix PowerShell modules
& "C:\Program Files\Citrix\Receiver StoreFront\Scripts\ImportModules.ps1"

# Run initial configuration incl. store and farm configuration
Set-DSInitialConfiguration -hostBaseUrl https://YourStorFrontServerFQDN -FarmName YourFarmName -port 80 -TransportType HTTP -SslRelayPort 443 -Servers YourXenDesktopServer -LoadBalance $false -FarmType XenDesktop

 

 

 

 

 

Andreas Mariotti

Automatische XenDesktop 7 Controller Installation

Die XenDesktop 7 Controller Installation lässt sich bzgl. des Setups durch Kommandozeilenparameter automatisch installieren, und die darauf folgenden Einrichtungsschritte wie Datenbankanlage und Erstkonfiguration lassen sich mittels PowerShell automatisieren.

Details zu den Kommandozeilenparametern findet man hier: http://support.citrix.com/proddocs/topic/xendesktop-7/cds-install-command.html und Details zu den PowerShell Cmdlets findet man hier: http://support.citrix.com/proddocs/topic/xendesktop-7/cds-sdk-cmdlet-help.html

In XenDesktop 7 gibt es nun erstmalig die Möglichkeit auch die Datenbank per PowerShell automatisiert anzulegen, die Citrix Dokumentation schweigt sich hierzu aktuell leider noch etwas aus. Die PowerShell Kommandos hierzu lauten New-XDDatabase und New-XDSite und befinden sich in Citrix.XenDesktop.Admin Modul. Die diversen andern PowerShell Befehle sind wiederrum in den Citrix Addinszu finden. Erfreulich hervorzuheben ist, dass man beim Verwenden der PowerShell Variante auch die Möglichkeit hat, getrennte Datenbanken für die Site, das Logging und das Monitoring anzulegen, und nicht nur eine Datenbank für alles, wenn man das Setup per GUI verwendet.

Hier beispielhaft die benötigten Kommandozeilenparameter und PowerShell Befehle:

# XenDesktop Controller Installation (w/o SQL express)
XenDesktopServerSetup.exe /noreboot /quiet /configure_firewall /components CONTROLLER,DESKTOPSTUDIO,DESKTOPDIRECTOR /nosql

# Load snapin and module
Import-Module Citrix.XenDesktop.Admin
Add-PSSnapin Citrix.*

# Create databases (only on first controller of the site)
New-XDDatabase -AdminAddress YourController -DatabaseServer YourSqlServer\YourInstance -AllDefaultDatabases -SiteName YourSite

# Create site (only on first controller of the site)
New-XDSite -AdminAddress YourController -DatabaseServer YourSqlServer\YourInstance -AllDefaultDatabases -SiteName YourSite

# Join additional controller to existing site (run this only on controller 2-n, first controller must be online)
Add-XDController -AdminAddress localhost -SiteControllerAddress YourFirstXDController

# Add domain admin Group to built-in full admin role/scopre
New-AdminAdministrator -AdminAddress localhost -Name 'YourDomain\Domain Admins'
Add-AdminRight -AdminAddress localhost -Administrator 'YourDomain\Domain Admins' -Role 'df20d111-4d0b-4502-ad12-5e8b3afc62a1' -Scope '00000000-0000-0000-0000-000000000000'

# Configure the license serve and confirm the certificate hast
Set-XDLicensing -AdminAddress YourController -LicenseServerAddress YourLicenseServer -LicenseServerPort 27000
Set-ConfigSiteMetadata -AdminAddress localhost -Name 'CertificateHash' -Value$(Get-LicCertificate -AdminAddress 'https://YourLicenseServer').CertHash
Andreas Mariotti

XenDesktop 7 „Failed to set database connection. Reason ServiceNotInSiteDB“

Vor kurzem bin ich bei der Einrichtung des neuen XenDesktop 7 auf ein Problem gestoßen, zu dem ich bei Citrix in der Knowledge Base noch keine Information fand, von daher will ich die Lösung hier erwähnen.

Das Problem tritt dann auf, wenn man einen getrennten SQL Server für die XenDesktop 7 Datenbank  verwendet, und sich die SQL Scripte für die Datenbankanlage exportiert, und diese vom SQL Administrator im SQL Management Studio ausführen lässt. Die Ausführung ist vermeintlich erfolgreich, beim weiteren Einrichten der Umgebung erhält man im Citrix Studio jedoch die Fehlermeldung „Failed to set database connection. Reason ServiceNotInSiteDB“

Das Problem wird dadurch verursacht, dass die SQL Scripte im SQLCMD Format exportiert wurden, das SQL Management Studio per Default diese jedoch als normale SQL Scripte, und nicht als SQLCMD Scripte, interpretiert.

Lösungsvariante 1: Scripte auf der Kommandozeile direkt mit der SQLCMD.exe ausführen

Lösungsvariante 2: Scripte per SQL Management Studio ausführen, zuvor jedoch die Option „Query | SQLCMD Mode“  aktivieren.

SQLCMD Mode

SQLCMD Mode

Andreas Mariotti

WDS „PXE-E32 TFTP open timeout“ Fehler

Vor kurzem hatte ich auf einem WDS Server in einer Schulungsumgebung das Problem, dass der PXE Boot am Zielsystem nicht wie erwartet funktionierte. Die Zielsysteme haben beim PXE Boot vom DHCP noch eine IP bekommen, danach wurde das Bootimage aber nicht übertragen und es gab den Fehler „PXE-E32 TFTP open timeout“

Zu dem Problem kommt es dann, wenn auf dem WDS Server auch gleichzeitig ein DNS Server läuft und sich Ports überschneiden. Lösen lässt sich das Problem auf zwei verschiedene Varianten:

Lösung 1: Setzen des folgende Registry Key incl. Restart des WDS Dienstes

HKLM\System\CurrentControlSet\Servic es\WDSServer\Parameters\UdpPortPolicy=0

Lösung 2: Konfiguration der Port Range am WDS durch folgenden Aufruf:

wdsutil /set-Server /Transport /StartPort:50000 /EndPort:65000
Andreas Mariotti

XenApp Lastauswertungsprogramme per PowerShell exportieren und importieren

XenApp Lastauswertungsprogramme (Load Evaluatoren) per PowerShell. Das Beispiel erfordert XenApp 6.0 oder neuer.

# PowerShell XenApp Snapins laden
Add-PSSnapin Citrix.XenApp.Commands
Add-PSSnapin Citrix.Common.Commands

# Export
get-xaloadevaluator -loadevaluatorname NameIhresLEs | export-CLIXml c:\Export.xml

# Import (Neuanlage):
import-CLIXml c:\Export.xml | new-xaloadevaluator

# Import (Aktualisieren)
import-CLIXml c:\Export.xml | set-xaloadevaluator
Andreas Mariotti

XenApp Anwendungsveröffentlichung auf Basis von Startmenü Links

Das folgende PowerShell Skript wurde von mir erstellt um automatisch Veröffentlichte Anwendungen (Published Applications) unter XenApp 6.5 zu erstellen. Das Skript liest hierzu das Startmenü des Rechners aus, ermittelt alle darin enthaltenen Verknüpfungen incl. deren Eigenschaften, und erstellt auf dieser Basis die Veröffentlichten Anwendungen in XenApp.

Download: XAStartMenuPublishing.zip

Andreas Mariotti

Kontextmenü für RDP Dateien erweitern

Die folgende Registry Modifikation erweitert das Explorer Kontextmenü um nützliche Menüpunkte für den Microsoft RDP Client (MSTSC.EXE) und dessen .RDP Dateien. Dadurch ist es z.B. möglich RDP Verbindungen in einer bestimmten Auflösung oder mit Optionen für den Multimonitorbetrieb über das Kontextmenü zu starten.

Registry Modifikation als Download:

RDPContextMenu

Registry Modifikation im Sourcecode:

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectConsole]
@="Verbinden mit Console"

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectConsole\command]
@="mstsc.exe -admin \"%1\""

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectCustomSize1024x768]
@="Verbinden mit 1024x768"

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectCustomSize1024x768\command]
@="mstsc.exe -w:1024 -h:768 \"%1\""

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectCustomSize1280x1024]
@="Verbinden mit 1280x1024"

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectCustomSize1280x1024\command]
@="mstsc.exe -w:1280 -h:1024 \"%1\""

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectCustomSize1600x1200]
@="Verbinden mir 1600x1200"

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectCustomSize1600x1200\command]
@="mstsc.exe -w:1600 -h:1200 \"%1\""

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectFullscreen]
@="Verbinden mit Vollbildschirm"

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectFullscreen\command]
@="mstsc.exe -f \"%1\""

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectMultimon]
@="Verbinden mit Multimon"

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectMultimon\command]
@="mstsc.exe -multimon \"%1\""

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectPublic]
@="Verbinden über Remotedesktopgateway"

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectPublic\command]
@="mstsc.exe -public \"%1\""

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectSpan]
@="Verbinden mit Span"

[HKEY_CLASSES_ROOT\RDP.File\shell\ConnectSpan\command]
@="mstsc.exe -span \"%1\""

 

 

nach oben