Le EdgeSight du pauvre

———————–
MAJ 05/04/2016
———————–
Ajout du “ClientVersion” afin d’obtenir la version du receiver de chaque utilisateur

———————-

Suite à des BSOD provoqués par nos agents EdgeSight, nous avons dû en urgence désinstaller les clients EdgeSight d’un silo d’une ferme XenApp 6.5 R03 us (les dumps sont en cours d’analyse et pour l’instant le coupable est rskcore.sys).

Nous avons certes rétabli le service, mais nous avons perdu des informations utiles comme “qui lance les applications publiées” (informations disponibles en mode avancé) 🙁 .

Du coup nous avons mis en place un script PowerShell qui récupère les applications publiées lancées au sein de notre ferme, puis écrit tout ça dans un fichier à plat (on va rapidement passer ça dans une base sql).

 

Edg_du_Pauvre011Et voila ce que ça donne sous excel (on vous l’avais dit c’est le EdgeSight du pauvre 🙂 mais ça rend le service

Comment fonctionne le script ? Tout d’abord nous ne souhaitions pas installer d’agent sur chaque serveur membre de la ferme ou passer par un login script (bien que GETPUBAPP de chez Ctrl-Alt-Del aurait parfaitement fait l’affaire), une solution est donc d’interroger le ZDC via un serveur d’administration par exemple (et là on entend certains crier HOULA).

Le script en lui-même est on ne peut plus simple, en gros on fait un “Get-Xasession|?{$_.LogOnTime -gt $Date3}” ($Date3 étant égal à l’heure du jour moins une minute) toutes les minutes et on ne récupère que les sessions ouvertes la dernière minute.

Concernant la mise en place du script, plusieurs solutions sont possibles comme une tache planifiée, un service ou bien un login script computer. Nous avons opté pour un service afin que ce dernier puisse se relancer en cas de d’arrêt du script.

Pour la création du service on passe par un bon vieux SC  (au préalable nous avions compiler notre script via PowerGui, le binaire sera lancé via SRVAny avec un compte admin de la ferme XenApp ) :

SC CREATE “ServiceName” binPath= “YourPath” DisplayName= “DisplayName” start= auto

 

Edg_du_Pauvre012Un tableau dynamique plus loin 😉

Download_2UsrApp.ps1


—————–

06/08/2014
—————–
Le script crée désormais un fichier de log par mois (NomDeLaFerme_Année-Mois_UsrApp.txt)

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

Erreur au lancement d’une application publiée : Pour ouvrir une session sur cet ordinateur distant, vous devez disposer de l’autorisation d’ouverture via les services Terminal Server…….

Alors, cette erreur peut-être dû à plusieurs choses exemple : l’utilisateur n’appartient pas au groupe “utilisateur du bureau à distance”, dans le listener ICA (onglet Autorisations), le groupe “utilisateur du bureau à distance” n’a pas les droits : Accès utilisateur et Accès invité, etc.. Un paramètre auquel on ne pense pas souvent est le “contrôle des types d’accès”. Dans une CMC : * Faites un clique droit sur votre ferme * Aller dans contrôle des types d’accès Si vous êtes dans cette configuration ((/dotclear2/public/Images/Error_applis/.Ctx_Error_applis_access_m.jpg|Ctx_Error_applis_access||Ctx_Error_applis_access, mar. 2009)) alors cochez Tout type d’accès ((/dotclear2/public/Images/Error_applis/.Ctx_Error_applis_access1_m.jpg|Ctx_Error_applis_access1||Ctx_Error_applis_access1, mar. 2009))

Post to Twitter

Modifier en ligne de commande certaines propriétés d’une application publiée

Nativement XenApp ne permet pas de modifier en ligne de commande les propriétésd’une application publiée (sauf pour Apputils, qui lui est nativement installé, mais ne permet sur une application publiée de rajouter ou supprimer un serveur, de programmer l’installation et la désinstalation de pack via Installation Manager, et d’afficher la liste des applications publiées)

Le SDK de XenApp fourni un outil permettant en ligne de commande de modifier lespropriétés d’une application publiée.

Le tools se nomme SetProp.exe.

Le SDK est disponible ici (j’ai testé Setprop avec le SDK 4.5)

Une fois le SDK installé, vous trouverez Setprop dans cette arborescence :

C:\Program Files\Citrix\MPSSDK\vc\setprop\ (chemin d’une installation par défaut)

L’utilisation de SetProp est toute simple :

Si vous souhaitez par exemple changer la ligne de commande d’une application publiéenommée Word, la commande sera la suivante :

setprop “\Applications\Word” /cl “C:\Program Files\Microsoft Office\Office10\WINWORD.EXE”

La liste des options possibles de Setprop :

/as ServerName CmdLine WorkDir – Add a server /au DomainName UserName X – Add a user. X is D, A, or N followed by U, or G /ds ServerName – Delete a server /du DomainName UserName X – Delete a user. X is D, A, or N followed by U, or G

/de Description – Set application description /el EncryptionLevel – Set application default encryption level /an AppName – Set application display name /ic FileName Index – Setapplication icon from given file /cl CmdLine – Set default command line /wd WorkDir – Set default working directory /dt Flags – Set desktop integrate flags /mf Attributes – Set MetaFrame attributes /pn Attributes – Set Program Neighborhood attributes /pf FolderName – Set Program Neighborhood folder /so SoundType – Set default sound type /wc WindowColor – Set default window color /wh WindowHeight – Set window height /ww WindowWidth – Set window width /ws WindowScale – Set window scale /wt WindowType – Set window type

Une fois scripté, SetProp permet de modifier à la volé plusieurs applications publiés sans avoir a ouvrir l’AMC

Post to Twitter