Script : Application d’un calculateur de charge en fonction du type de serveur

Récemment dans plusieurs fermes XenApp 6.5 R01 nous avons eu besoin d’appliquer un calculateur de charge (Load Evaluator) sur tous les serveurs dont le calculateur de charge est “Défaut” (et on en avait un max 🙂 ) .

Au passage nous en profitons pour appliquer un calculateur de charge en fonction du type de serveur (Virtuel ou physique).

Dans notre cas les calculateurs de charges sont paramétrés via des Groupes de taches (Worker Groups), un pour les serveurs virtuels et un pour les serveurs physiques.

Comme d’hab ça passe par un script Powershell.

Pré-requis :
– Deux calculateurs de charge configurés en fonction du type de serveur (Virtuel ou Physique)
– Deux stratégies ordinateur, chacune pointant sur un des calculateurs de charge.
– Deux groupes de taches permettant le filtrage des stratégies

 


Xa6_AttribLE.ps1



Xa5_AttribLE.ps1
Pour XenApp 5 (le script reste le même sans les parties Worker Groups et GPupdate)

Post to Twitter

Afficher la liste des applications publiées pour un utilisateur en Powershell

——————
15/05/2013
——————  
Le script utilise désormais le Token-Groups (merci Pierre pour l’info 😉 ) pour la recherche de groupes d’un utilisateur.
L’avantage du Token-Groups est que nous n’avons plus besoin d’utiliser des recherches récursives, l’attribut (qui est un attribut calculé) contient la liste de tous les SID des groupes  (ainsi que les groupes imbriqués) ce qui améliore grandement les temps de recherche :).
Le script affiche la liste des applications publiées pour un utilisateur (un fichier texte contenant la liste des applications publiée pour un utilisateur est également disponible dans le répertoire racine du script). 


 

search_apps_users.ps1 

——————
27/03/2013
—————— 

Récemment on nous a demandé de sortir la liste de toutes les applications publiées pour un utilisateur  (dans une ferme en XenApp 6.5 R01).

Donc direction PowerShell 🙂 

Nous avons mis en place un script permettant d’afficher la liste de toutes les applications publiées d’un utilisateur dans une ferme (que l’application soit publiée en direct ou via un groupe, concernant le groupe la recherche dans le groupe est récurisve).

Concernant la recherche récursive cette dernière se fait en DotNet (.Net 3.5 sp1 requis dans notre cas).

Au départ nous étions partis avec la cmdlet Get-ADGroupMember mais nous avons vite rencontré la limitation du  MaxGroupOrMemberEntries  (à 5000, bien que cette valeur soit modifiable via le fichier Microsoft.ActiveDirectory.WebServices.exe.config sur les DC). Il est aussi possible de faire la recherche en ADSI ou via les cmdlet Quest (mais on avait pas envie 🙂 ).

Avant d’exécuter le script modifier en ligne 19 la valeur de la variable $DC par un de vos DC (un DC prévu pour l’exécution de script  par exemple).

Une fois le script passé, nous avons constaté en prod (bien qu’on s’en doutait au vu des nombreuses imbrications de groupes) que certaines applications étaient publiées plusieurs fois pour un même utilisateur.

Merci à VmDude pour le trick du bind sur un DC spécifique en DotNet .

On constate que certaines applications sont publiées directement sur le compte du user au passage

 

DisplayAllAppsForSpecificUser.ps1

Post to Twitter

Mise à jour de XenApp_Check : 2.2

Ajout de la section Citrix HotFix missing, permettant de vérifier la présence d’un HotFix Citrix sur chaque serveur membre de la ferme XenApp (XA5/6x).
Par défaut cette section est activée, vous pouvez la désactiver via le fichier XenApp_Check.ps1 en mettant à FALSE la variable $Check_Ctx_HotFix

Si vous souhaitez changer version du HotFix Citrix recherché (la modification se fait dans le fichier XenApp_CheckXAx.ps1) :
– Pour XenApp6.0/6.5 changer la valeur de la variable $Ctx_HotFixXA60 (pour XenApp 6.0)  ou $Ctx_HotFixXA65 (pour XenApp 6.5).
– Pour XenApp 5 changer les valeur de  la variable $Ctx_HotFixXA5_32 (pour les OS 32bits) et/ou $Ctx_HotFixXA5_64 (pour les OS 64 bits).
 

Reste plus qu’à leur installer le HotFix validé par vos soins

 

Si le message LHC error or CtxHotFix not Installed apparait dans la colonne Citrix HotFix, soit le HotFix n’est pas installé soit la LHC est corrompu

Le billet sur XenApp_Check

Post to Twitter

Problème d’application de stratégies Citrix (via l’Appcenter)

Sur un serveur XenApp 6.5 R01 US nous avions un problème d’application de Calculateur de charge (via les policy Citrix de l’Appcenter), en regardant dans les logs du serveur nous avons constaté la présence de l’event ID 1091.

Log Name: System
Source: Microsoft-Windows-GroupPolicy
Event ID: 1091
Level: Warning
Description:
Windows could not record the Resultant Set of Policy (RSoP) information for the Group Policy extension <Citrix Group Policy>. Group Policy settings successfully applied to the computer or user; however, management tools may not report accurately.

Un rsop sur le serveur en question

La CTX130116 traite ce type de problème, en effet dans notre cas les fichiers Rsop.gpf et Rollback.gpf avaient bien une taille de 0 Ko.
Une fois les fichiers Rsop.gpf et Rollback.gpf (ainsi que les répertoires contenus dans %PROGRAMDATA%\Citrix\GroupPolicy) supprimés (associé à un gpupdate /force) l’application des policy Citrix s’est faite sans problème.

Afin de vérifier que nous n’avons pas d’autres serveurs rencontrant le même problème d’application de policy Citrix, nous avons mis en place un script PowerShell listant les serveurs XenApp ayant des fichiers Rsop.gpf et Rollback.gpf avec une taille de 0 Ko.

 

Lui il est bon pour un delete de fichier Rsop.gpf et Rollback.gpf 🙂

 

CheckGpfFileCtxPolicy.ps1

 

Post to Twitter

PowerShell : Graphique des CCU d’une application publiée

Dans ce billet et  juste pour le fun, un script PowerShell permettant de “grapher” les CCU d’une application publiée.

On vous l’a dit cacti on aime 😉
Tester sur une Ferme en XA 6.5 R01 Us, via une tâche planifiée et à la mano.

Bien que le résultat soit old school, c’est propre et ne nécessite aucune installation (hormis le Chart Controls for Microsoft .NET Framework 3.5 🙂 .

Pré-requis :

  • Installer le Chart Controls for Microsoft .NET Framework 3.5
  • Remplacer la valeur de la variable $App par celle de votre application dans le script XenApp_Chart.ps1
  • Via une tâche planifiée, exécuter le script XenApp_Chart.ps1 (ou à la mano juste pour tester 🙂 ). 
     

XenApp_Chart.ps1

 

La partie graphique du script est fortement inspirée du billet “Tutorial: PowerShell and Microsoft Chart Controls (or How To Spice Up Your Reports)” de ByteCookie.

Post to Twitter

Afficher les applications dont le BrowserName est différent du DisplayName

Si vous souhaitez afficher la liste des applications dont le BrowersName n’est pas identique au DisplayName, exécutez la ligne de commande PowerShell ci-dessous (gare aux surprises 🙂 ).

Ho la belle bleu 🙂

 

get-xaapplication|%{if($_.DisplayName -ne $_.BrowserName){write-host $_.DisplayName "-" $_.BrowserName;$count++}};write-host "Count:" $Count
 

Post to Twitter

Mise à Jour de XenApp_Check : 2.1

Version : 2.1 (XA5/XA6x) 

Ajout de la section EdgeSight Agent, permettant de vérifier la version agent installée sur chaque serveur membre de la ferme XenApp (XA5/6x).
Par défaut cette section est désactivée, vous pouvez l’activer via le fichier XenApp_CheckXAx.ps1 en mettant à TRUE la  variable $Check_EdgeSightAgentVer

Post to Twitter

Supprimer un utilisateur “indésirable” de ses applications publiées

Que celui qui n’a jamais publié une application à un utilisateur “directement”  lève sa souris 🙂  .

Le problème est qu’il arrive qu’on oublie des fois\souvent de supprimer la/les publication(s) de l’utilisateur en question et dans le temps la situation ne s’améliore pas.

Si vous souhaitez supprimer toutes les applications publiées d’un utilisateur configuré en dur, la commande PowerShell ci-dessous vous aidera dans votre démarche.

$User="YourUser";Get-XAapplicationreport *|?{$_.Accounts -eq $User}|%($_){Remove-XAApplicationAccount $_ $User;write-host $_ ": $User was removed"}

Post to Twitter

Vérifiez si un utilisateur fait bien parti d’un groupe de publication

Dans une infra AD un peu “cossu”, il peut arriver que le groupe de publication contienne des groupes imbriqués dans d’autres groupes imbriqués etc.. etc… 🙂 ……….et tout ça dans une profondeur assez “intéressante” (une trentaine d’imbriquation dans notre cas).

Quand les collègues doivent vérifier rapidement si un utilisateur fait bien partie d’un groupe de publication ça peut devenir un peu… laborieux.

En PowerShell c’est simple et rapide :

Get-ADGroupMember -Identity "YourGroup" -Server "YourDC" -recursive | % {if ($_.name -eq "YourUser") {write-host "User found"}}

Au passage si vous souhaitez en savoir plus sur les limitations Active Directory c’est par ici.

Post to Twitter

Supprimer toutes les applications publiées d’un serveur

En PowerShell (testé sous XenApp 6x) ça tient sur une ligne :

$Server=Read-Host "Enter Server Name";get-xaapplication -servername $Server | Foreach ($_) {write-host $_.DisplayName ; Remove-XAApplicationServer -BrowserName $_ -ServerNames $Server}

Avant

 

Après

Post to Twitter