Identifier les applications avec un seul serveur

Un petit script pour identifier rapidement les applications publiées ayant un seul serveur.

$OriginalColor=$Host.UI.RawUI.ForegroundColor;get-xaapplicationReport *|Sort DisplayName|Format-Table -Property DisplayName,@{label="Serveur";Expression={If($_.ServerNames.count -le 1) {$Host.ui.rawui.ForegroundColor="Red";$_.ServerNames.count}Else{ $Host.ui.rawui.foregroundcolor="Yellow";$_.ServerNames.count}}};$Host.UI.RawUI.ForegroundColor=$OriginalColor

Ctx_App_SrvCountLes applications avec un seul serveur apparaissent en rouge 😉 

 

Pour rappel dans XenAppCheck vous avez aussi la liste des applications avec un seul serveur.

Ctx_App_SrvCount1

Post to Twitter

Problème de Session Sharing

Récemment nous avons rencontré des problèmes de Session Sharing sur une ferme XenApp 6.5 R01 US, les utilisateurs qui lançaient plusieurs applications publiées sur un même silo se retrouvais avec plusieurs sessions sur un même serveur, accompagné de temps de connexion anormalement long, et cerise sur le gâteau la déconnexion de toutes les sessions de l’utilisateur durant le lancement d’une application publiée (lancée par ce même utilisateur) sur ce serveur (et la reconnexion des ces même sessions une fois l’application publiée démarrée).

La CTX136295 (superseded par la R03 via la CTX138537 ) via un fix (XA650R01W2K8R2X64065) corrige ce type problème (compte my citrix requis)  et vu que le passage en R03 (à l’époque 😉 ) n’était pas encore engagé ça nous a permis de résoudre l’incident rapidement.

SessionSharingLes Fix encore dispos alors qu’il sont inclus dans un Rollup Pack  c’est rare 😉

 

Download_2On vous met le fix au cas où 🙂 .

Post to Twitter

Test de ControlUp 3

Il y a un peu plus d’un an nous avions testé ControlUp 1.0 (voir billet), la version 3.0 (3.0.1.399 dans notre cas) vient  de sortir  et autant vous dire Smart-X a passé la vitesse supérieure 😉 .

Nos tests ont été effectués sur un serveur 2008 R2 sp1 Fr, et comme d’habitude l’installation et la prise en main de ControlUp sont déconcertantes de facilité.

Les ajouts de fonctionnalités (et améliorations) les plus importantes que nous avons constaté durant notre test :

  • Ajout d’une section Incidents
  • Possibilité de monitorer les services
  • Possibilité d’exécuter des scripts en remote
  • Ajout de colonnes Citrix supplémentaires dans la section Computer
  • Ajout d’actions de diagnostics sur les computers
  • Support . Net Framework 4.5 
  • Ajout personnalisé d’events log
  • Possibilité de changer la priorité d’un processus
  • Affichage de la latence ICA dans la section computer
  • Ajout d’un magasin de mot de passe

L’installation se fait via une une suite de popup

ControlUp_Install01Cliquez sur le bouton Continuer

ControlUp_Install02Choississez “I Accept the agreement”
Cliquez sur le bouton Continuer

ControlUp_Install03Rentrez le nom de votre organisation
Cliquez sur le bouton Continuer

ControlUp_Install04
ControlUp_Install05Dans un premier on garde les triggers par défaut
Cliquez sur le bouton Yes

 

On vous avait prévenu, l’installation est une formalité 😉 .

ControlUp_Install08

 

ControlUp_Install09En moins de 5 mn (installation comprise) on est déjà au sein de la console de ControllUp

Dans un premier temps il faut rajouter les serveurs membre de/des ferme(s) XenApp dans la console ControlUpp.

 

 L’installation de l’agent (port 40705 par défaut) se fait en remote via la console ControlUpp (ainsi que la désinstallation), l’installation par lot est bien sur possible (il est aussi possible de télécharger l’agent et de le déployer par d’autres outils).

ControlUp_Install07

 

 

Vous avez la possibilité via la console ControUp de configurer le ControlUp Monitor afin de créer un service qui permettra le monitoring en continu.

ControlUp_Install092On vous conseille ce mode si vous souhaitez une mise en place pour du 24/7

 

Dans la suite du billet nous allons énumérer quelques  unes des nombreuses fonctionnalités de ControlUp.

ControlUp_Install093 Dans la console vous avez la possibilité de modifier la liste des colonnes et donc de personnaliser le monitoring (avec des settings xenapp, xendesktop)

 

ControlUp_Install094Il est possible d’ajouter des triggers (sur des événements Windows, des process démarrés, des arrêts de serveur etc..) en plus de ceux déjà configurés

 

ControlUp_Install095La liste des actions possibles sur un host (Le “Script Based Actions” est notre préféré 😉 )

 

ControlUp_Install097La liste des actions possibles sur une session



ControlUp_Install096La fonction Incidents permet d’obtenir rapidement un état des incidents avec un historique

 

ControlUp_Install099Il est possible de rajouter des scripts réalisés par Smart-X ou bien les vôtres (bat, vbs et PowerShell   😉

La configuration de la console ControlUp se trouve dans C:\Users\VotreUser\AppData\Roaming\ControlUp et HKEY_CURRENT_USER\Software\Smart-X\ControlUp.

En résumé ControlUp permet de mettre en place un monitoring rapide et efficace de vos fermes XenApp, de plus Yoni est à l’écoute de la communauté Citrix et certains d’entre eux sont impliqués directement dans le projet  (Shawn Bass, Jarian Gibson et Shane Kleinert)  🙂 .

 

ControlUp_Install0991Au passage la version Basic est toujours free

 

 

 

 

 

Post to Twitter

Rechercher une application dans plusieurs fermes XenApp

Si vous souhaitez connaitre la/les fermes publiant  une application  (par exemple word, excel ou bien une application comprenant une chaîne de caractère “TEST” 😉 ) le script contenu dans ce billet devrait vous intéresser.

Les pré-requis sont que les serveurs entrés dans la variable $Serveurs aient le PowerShell SDK d’installer (XenApp 5, XenApp 6x) et que le port TCP 2513 soit ouvert entre le serveur exécutant le script et le(s) serveurs ayant  le sdk installé (bien sur on ne peut attaquer une ferme XenApp 6x à partir d’un serveur XenApp 5 et vice-versa 😉  .

Modifier la variable $Serveurs (ligne trois du script) la liste des serveurs (un par ferme XenApp) permettant de se connecter avec les différentes fermes XenApp.


Apps_Search_All_Farm

23 Applications publiées réparties sur trois fermes XenApp 6.5 ayant dans leur  browsername la chaîne de caractère “TEST”  😉

 Download_2SearchAppFarms.ps1

Post to Twitter

Supprimer les applications désactivées


Depuis quelques temps les rapports issus de nos XenApp_Check remontaient un nombre croissant d’applications désactivées sur nos fermes XenApp 5 et 6x  (Recette, Qualification et Production).

AppDisable0452 applications désactivées sur une ferme XenApp 5 R07

 

Vu que ces applications restaient désactivées dans le temps (plus de 30 jours) nous avons mis en place un script PowerShell permettant de supprimer toutes (sauf les applications ayant dans le champs description la chaîne de caractère #NOT_DELETE#) les applications désactivées d’une ferme.

Les actions du script :

  • Sauvegarde dans le répertoire courant des applications désactivées
  • Suppression des applications désactivées (hors application ayant dans le champs description la chaîne de caractère #NOT_DELETE#)
  • Suppression des sauvegardes supérieur à 180 jours (dans le répertoire courant)

     

Apps_Delete54 applications (soit deux de plus en l’espace d’une journée) en moins  dans une de nos fermes XenApp 5 R07

 

AppDisable01Le Get-XaApplication prenait 5,40 secondes pour 580 applis dans la ferme

 

AppDisable02On tombe  à 4,64 secondes une fois les 54 applications supprimés 😉

 

Pour restaurer une application lancez la ligne de commande ci-dessous :

import-Clixml "\\YourPath\Backup\App.xml"|New-XAApplication

 

Download_2
App_DisableDelete.ps1

Post to Twitter

Retour “Qfarm /load” vide…. Le retour

Nous revoilà avec un problème de commande Qfarm /Load (voir notre billet “Retour «Qfarm /load  vide“) qui ne retourne aucune charge serveur dans l’une de nos fermes (XA65 R01 US Sp1).

Comme le Qfarm /load ne retournait rien, nous sommes passés par un Get-XaServerLoad qui nous a retourné l’erreur :

 

Get-XaServerLoad : Exception has been trown by the target of an invocation

 

QfarmLoad01On comprend que l’un de nos serveurs XenApp ne répond pas correctement au Get-XaServerLoad


Afin de trouver le serveur en question on lance un  “
Get-XAserver|%{Get-XAServerLoad $_.Servername}“, Ce qui nous a permis de trouver le serveur qui ne répondait pas au Get-XAServerLoad.

On test un Qfarm /load Serveur1 (remplacez Server1 par votre serveur) qui nous répond que l’IMA n’est pas disponible (tout du moins pour cette requête)

 

QfarmLoad02


Une fois sur le serveur en question nous rencontrons l’event Event ID 3609
“Failed to load plugin C:\Program Files (x86)\Citrix\System32\Citrix\IMA\SubSystems\ImaAppSs.dll with error IMA_RESULT_WRITE_TO_LOG_FAILED” qui nous amène à la CTX134504.

La lecture de la  CTX134504 met en évidence que le problème vient du CitrixLogServer COM+ qui ne repond pas.

Du coup direction le Service des composants (comexp.msc), en développant Console Root-Component Services-Computer-COM+Application nous tombons sur l’erreur :


An error occurred while processing the last operation. Error code 8007042C – The dependency service or group failed to start

 

QfarmLoad03Ok ça risque pas de fonctionner la 🙂

 

En regardant les dépendances du Service Application système COM+ ( COM+ System Application) nous constatons que le service Système d’événement COM+ (System Event Notification Service ) était désactivé. Une fois le service service Système d’événement COM+ activé et démarré le Qfarm /load retournait bien les valeurs de charge de tous les serveurs membre de la ferme.

WTF

Post to Twitter

Check des services XenApp 6.5

Suite à une campagne de patchs MS, un nombre important de serveurs XenApp (60 sur 700) avait des services XenApp (et non XenApp comme le spooler par exemple) non démarrés (RadeSvc,  CtxSmartCardSvc, cpsvc) sur une de nos fermes XenApp 6.5 R01 Us.

Vu que les services démarraient sans problème manuellement sur plusieurs serveurs et ne tombaient pas une fois démarré (et qu’il fallait rendre le service ASAP), nous sommes passés par la case PowserShell afin de checker l’état des services XenApp (les principaux) et de démarrer les services qui ne l’étaient pas (on a bien sûr gardé quelques serveurs sous le coude histoire de comprendre ce qui a bien pu se passer).

Check_ServicesXenAppDeux serveurs sur deux dans notre lab ont des services arrêtés (que fait le pilotage 🙂 ).

 

Check_ServicesXenApp1En relançant le script on constate que les services ont bien été démarrés.

 

Download_2CheckServiceXenApp.ps1

Post to Twitter

Comparer les OUs enfants de deux OUs parents

Logiquement dans toute production XenApp (ou autre) on a une production ISO à la qualification, cependant il peut arriver au fil du temps que la réalité soit un peu différente 🙂 .

Afin de mettre en évidence les silos applicatifs n’ayant pas de Qualif (ou pas de Prod) nous avons mis en place un PowerShell qui compare les OUs de Prod et de Qualif de nos différentes fermes XenApp.

 

Ou_XenApp

 

En général la qualif XenApp est sur une Ad de Qualif et la Prod XenApp sur une Ad de Prod, mais (car il y a toujours un mais dans certaines missions) dans le cas présent la qualif et la prod sont sur l’AD de prod 🙂 .

En ligne 1 il faut adapter le contenu de la variable $Vers en fonction de votre nomenclature.
Les OUs parents sont à renseigner en ligne 13 et 16 du script (vous pouvez aussi supprimer la variable $Vers et le Foreach en ligne 3 et31 si vous ne souhaitez checker qu’une seule version XenApp)

CompareOuSur notre lab on est presque ISO 🙂

 

Download_2Compare_Ou_ProdQualif.ps1

Post to Twitter

Créer une alerte sur les GPO Citrix modifiées.


Dans les infras où la délégation est “forte” (dans le cas présent les GPOs),  il est important (pour ne pas dire obligatoire) de mettre en place des alertes permettant d’informer les administrateurs qu’une ou plusieurs GPOs ont été modifiée(s).  L’un des avantages de ce type d’alerte est de permettre à l’ensemble des admins  d’avoir le même niveau de connaissance sur les  modifications apportées aux GPO.

dontTouchEn amont on pourrait aussi mettre ça, histoire que tout le monde ait le même niveau de connaissance 🙂

En PowerShell la cmdlet GET-GPO avec son attribut ModificationTime associé à un filtre sur le DisplayName (Ctx dans notre cas) permet de filtré facilement les GPOs  venant d’être modifiées,  le résultat étant envoyé par mail en html.

GPOs_Modified
Le script remonte toute les GPOs dont le DisplayName contient la chaîne “Ctx” et qui ont été modifier durant les trois dernières heures.
A l’ancienne en tache planifiée ça fera l’affaire 😉  .

 

Download_2Check_Gpo_Modified.ps1

Post to Twitter

Exclusions antivirus


MAJ : 04/01/2017
Ajout d’une exclusion dans la section UPM


Ajout de l’exclusion : %ProgramFiles%\Citrix\User Profile Manager\Driver\UpmJit.sys


MAJ : 07/10/2015
Ajout de la section PVS servers


Récemment nous avons du mettre  en place des exclusions antivirus (pour des clients SEP 11 ) destinées à des environnements XenApp (5,6.0 et 6.5), et comme à chaque fois on avait pas sous la main une trame générique regroupant les principales exclusions antivirus Microsoft et Citrix .

Afin de ne plus chercher,  nous avons regroupé les principales exclusions dans ce billet.

 

W2K8 R2 

EdgeSight Exclusions Agent

  • %ALLUSERSPROFILE%\Application Data\Citrix\System Monitoring\Data
  • %ProgramFiles%\Citrix\System Monitoring\Agent\Core\rscorsvc.exe
  • %ProgramFiles%\ Citrix\System Monitoring\Agent\Core\Firebird\bin\fbserver.exe

XenApp 6.5 Exclusions

  • %ProgramFiles(x86)%\Citrix\Group Policy\Client-Side Extension\CitrixCseEngine.exe
  • %ProgramFiles(x86)%\Citrix\System32\wfshell.exe
  • %ProgramFiles(x86)%\Citrix\System32\ctxxmlss.exe
  • %ProgramFiles(x86)%\Citrix\System32\CtxSvcHost.exe
  • %ProgramFiles(x86)%\Citrix\System32\mfcom.exe
  • %ProgramFiles(x86)%\Citrix\System32\Citrix\Ima\ImaSrv.exe
  • %ProgramFiles(x86)%\Citrix\System32\Citrix\Ima\IMAAdvanceSrv.exe
  • %ProgramFiles(x86)%\Citrix\HealthMon\HCAService.exe
  • %ProgramFiles(x86)%\Citrix\Streaming Client\RadeSvc.exe
  • %ProgramFiles(x86)%\Citrix\Streaming Client\RadeHlprSvc.exe
  • %ProgramFiles(x86)%\Citrix\Independent Management Architecture\RadeOffline.mdb
  • %ProgramFiles(x86)%\Citrix\Independent Management Architecture\imalhc.mdb

Windows Exclusions

  • %windir%\SoftwareDistribution\Datastore\Datastore.edb
  • %windir%\SoftwareDistribution\Datastore\Logs\*.log
  • %windir%\SoftwareDistribution\Datastore\Logs\*.jrs
  • %windir%\SoftwareDistribution\Datastore\Logs\Edb.chk
  • %windir%\SoftwareDistribution\Datastore\Logs\Tmp.edb
  • %windir%\Security\Database\*.edb
  • %windir%\Security\Database\*.sdb
  • %windir%\Security\Database\*.log
  • %windir%\Security\Database\*.chk
  • %windir%\Security\Database\*.jrs
  • %allusersprofile%\NTUser.pol
  • %windir%\System32\GroupPolicy\Machine\Registry.pol
  • %windir%\system32\csrss.exe
  • %windir%\system32\spoolsv.exe
  • %windir%\system32\winlogon.exe
  • %windir%\system32\userinit.exe
  • %windir%\system32\smss.exe
  • %windir%\System32\Spool

UPM

  • %ProgramFiles%\Citrix\User Profile Manager\UserProfileManager.exe
  • %ProgramFiles%\Citrix\User Profile Manager\Driver\UpmJit.sys

PVS (servers)

  • %windir%\System32\drivers\CvhdBusP6.sys
  • %windir%\System32\drivers\CfsDep2.sys
  • %ProgramFiles%\Citrix\Provisioning Services\BNTFTP.EXE
  • %ProgramData%\Citrix\Provisioning Services\Tftpboot\ARDBP32.BIN
  • %ProgramFiles%\Citrix\Provisioning Services\StreamService.exe
  • %ProgramFiles%\Citrix\Provisioning Services\StreamProcess.exe
  • %ProgramFiles%\Citrix\Provisioning Services\soapserver.exe
  • %ProgramFiles%\Citrix\Provisioning Services\PVSTSB.exe
  • %ProgramFiles%\Citrix\Provisioning Services\BNAbsService.exe
  • %ProgramFiles%\Citrix\Provisioning Services\Notifier.exe (à partir de PVS 6.0)
  • %ProgramFiles%\Citrix\Provisioning Services\MgmtDaemon.exe (à partir de PVS 6.0)
  • %ProgramFiles%\Citrix\Provisioning Services\Inventory.exe (à partir de PVS 6.0)
  • …\Store (chemin du répertoire hébergeant les vDisk store)

PVS (poste cible)

  • %ProgramFiles%\Citrix\Provisioning Services\drivers\CNicTeam.sys
  • %ProgramFiles%\Citrix\Provisioning Services\BNDevice.exe
  • %ProgramFiles%\Citrix\Provisioning Services\drivers\BNIStack6.sys
  • %ProgramFiles%\Citrix\Provisioning Services\drivers\CVhdBusp6.sys
  • …\.vdiskcache (emplacement du fichier de cache vdisk)
  • %ProgramFiles%\Citrix\Provisioning Services\TargetOSOptimizer.exe
  • %ProgramFiles%\Citrix\Provisioning Services\drivers\CFsDep2.sys

 

W2K3 (32 bits)

EdgeSight Exclusions Agent

  • %ALLUSERSPROFILE%\Application Data\Citrix\System Monitoring\Data
  • %ProgramFiles%\Citrix\System Monitoring\Agent\Core\rscorsvc.exe
  • %ProgramFiles%\ Citrix\System Monitoring\Agent\Core\Firebird\bin\fbserver.exe

XenApp Exclusions

  • %ProgramFiles%\Citrix\System32\wfshell.exe
  • %ProgramFiles%\Citrix\System32\ctxxmlss.exe
  • %ProgramFiles%\Citrix\System32\mfcom.exe
  • %ProgramFiles%\Citrix\System32\Citrix\Ima\ImaSrv.exe
  • %ProgramFiles%\Citrix\System32\Citrix\Ima\IMAAdvanceSrv.exe
  • %ProgramFiles%\Citrix\HealthMon\HCAService.exe
  • %ProgramFiles%\Citrix\Streaming Client\RadeSvc.exe
  • %ProgramFiles%\Citrix\Independent Management Architecture\RadeOffline.mdb
  • %ProgramFiles%\Citrix\Independent Management Architecture\imalhc.mdb

Windows Exclusions

  • %windir%\SoftwareDistribution\Datastore\Datastore.edb
  • %windir%\SoftwareDistribution\Datastore\Logs\*.log
  • %windir%\SoftwareDistribution\Datastore\Logs\*.jrs
  • %windir%\SoftwareDistribution\Datastore\Logs\Edb.chk
  • %windir%\SoftwareDistribution\Datastore\Logs\Tmp.edb
  • %windir%\Security\Database\*.edb
  • %windir%\Security\Database\*.sdb
  • %windir%\Security\Database\*.log
  • %windir%\Security\Database\*.chk
  • %windir%\Security\Database\*.jrs
  • %allusersprofile%\NTUser.pol
  • %Systemroot%\System32\GroupPolicy\Machine\Registry.pol
  • %SystemRoot%\system32\csrss.exe
  • %SystemRoot%\system32\spoolsv.exe
  • %SystemRoot%\system32\winlogon.exe
  • %SystemRoot%\system32\userinit.exe
  • %SystemRoot%\system32\smss.exe
  • %systemroot%\System32\Spool

UPM

  • %ProgramFiles%\Citrix\User Profile Manager\UserProfileManager.exe

 

W2K3 64 bits

EdgeSight Exclusions Agent

  • %ALLUSERSPROFILE%\Application Data\Citrix\System Monitoring\Data
  • %ProgramFiles%\Citrix\System Monitoring\Agent\Core\rscorsvc.exe
  • %ProgramFiles%\ Citrix\System Monitoring\Agent\Core\Firebird\bin\fbserver.exe

XenApp Exclusions

  • %SystemRoot%\system32\csrss.exe
  • %SystemRoot%\system32\spoolsv.exe
  • %SystemRoot%\system32\winlogon.exe
  • %SystemRoot%\system32\userinit.exe
  • %SystemRoot%\system32\smss.exe
  • %ProgramFiles(x86)%\Citrix\System32\wfshell.exe
  • %ProgramFiles(x86)%\Citrix\System32\ctxxmlss.exe
  • %ProgramFiles(x86)%\Citrix\System32\mfcom.exe
  • %ProgramFiles(x86)%\Citrix\System32\Citrix\Ima\ImaSrv.exe
  • %ProgramFiles(x86)%\Citrix\System32\Citrix\Ima\IMAAdvanceSrv.exe
  • %ProgramFiles(x86)%\Citrix\HealthMon\HCAService.exe
  • %ProgramFiles(x86)%\Citrix\Streaming Client\RadeSvc.exe
  • %ProgramFiles(x86)%\Citrix\Independent Management Architecture\RadeOffline.mdb
  • %ProgramFiles(x86)%\Citrix\Independent Management Architecture\imalhc.mdb

Windows Exclusions

  • %SystemRoot%\SoftwareDistribution\Datastore\Datastore.edb
  • %SystemRoot%\SoftwareDistribution\Datastore\Logs\*.log
  • %SystemRoot%\SoftwareDistribution\Datastore\Logs\*.jrs
  • %SystemRoot%\SoftwareDistribution\Datastore\Logs\Edb.chk
  • %SystemRoot%\SoftwareDistribution\Datastore\Logs\Tmp.edb
  • %SystemRoot%\Security\Database\*.edb
  • %SystemRoot%\Security\Database\*.sdb
  • %SystemRoot%\Security\Database\*.log
  • %SystemRoot%\Security\Database\*.chk
  • %SystemRoot%\Security\Database\*.jrs
  • %allusersprofile%\NTUser.pol
  • %Systemroot%\System32\GroupPolicy\Machine\Registry.pol
  • %SystemRoot%\system32\csrss.exe
  • %SystemRoot%\system32\spoolsv.exe
  • %SystemRoot%\system32\winlogon.exe
  • %SystemRoot%\system32\userinit.exe
  • %SystemRoot%\system32\smss.exe
  • %systemroot%\System32\Spool

UPM

  • %ProgramFiles(x86)%\Citrix\User Profile Manager\UserProfileManager.exe

 

Web Interface

  • %SystemRoot%\system32\LogFiles
  • %systemroot%\system32\inetsrv

 

EdgeSight Server

  • %SystemRoot%\system32\LogFiles
  • %systemroot%\system32\inetsrv
  • %ProgramFiles%\Citrix\System Monitoring\Server\EdgeSight\scripts\rssh
  • %ProgramFiles%\Citrix\System Monitoring\Server\EdgeSight\Pages

 

Serveur de Licence Citrix

  • %ProgramFiles(x86)%\Citrix\Licensing
  • %systemroot%\system32\inetsrv
  • %SystemRoot%\system32\LogFiles

 

Serveur de Licence RDS

  • %SystemRoot%\System32\LServer\*.edb
  • %SystemRoot%\System32\LServer\*.log
  • %SystemRoot%\System32\LServer\*.tmp
  • %SystemRoot%\System32\LServer\*.chk

 

Quelques liens sur les exclusions antivirus Microsoft et Citrix :

Post to Twitter