La configuration de nos batteries Citrix évolue, il n’est plus rare de devoir en gérer plusieurs. Les outils fournis par Citrix font bien leurs jobs, mais pour trouver la session d’un utilisateur parmi 10 batteries avec un nombre croisant de silos…
L’outil CtxKill vous permet de faire vos recherches sur plusieurs batteries. C’est du bêta, j’attends vos retours.
http://doc.doctor-citrix.com/fr/ctxkill
L'outil CtxKill vous permet de faire vos recherches sur plusieurs batteries. C'est du bêta, j'attends vos retours.
;)
http://www.doctor-citrix.com/fr/produit/ctxkill.html
Salut Renaud,
Tout d'abord merci de partager ton développement qui me semble interessant pour la gestion de gros environnement Citrix.
Je viens de tester l'application et je rencontre un soucis : je n'arrive pas à faire de recherche de session.
Voici la liste de mes tests :
- Ajout de la ferme :
FERME FQDN_du_ZDC
FERME FQDN_du_ZDC:Port_XML
FERME Nom_NETBIOS_du_ZDC
FERME Nom_NETBIOS_du_ZDC:Port_XML
FERME IP_du_ZDC
FERME IP_du_ZDC:Port_XML
- Critère de recherche (pour chacun des tests ci-dessus) :
username
domainusername
A chaque fois, l'outil me renvoi "0 session(s)", y a-t-il quelque chose de spécifique à faire (je lance l'outil depuis une console d'admin / pas d'un serveur Ctx)?
Pour info, je lance l'outil avec un compte Administrateur de la ferme.
Merci d'avance pour ton retour,
Sam
En effet, je n’ai pas encore fait la doc :-[
1/ ajout de la batterie:
“farm name” "server name"
le nom de la batterie doit etre unique, c’est tout. c’est uniquement la clef de registre. l’application utilisera uniquement le propriétée mfcom "FarmName"
Le nom du serveur doit etre au format: nbt, fqdn ou @IP pas de port dans ce champ
2/ lancement:
Uniquement depuis un serveur XA, en ica ou rdp
avec un compte qui a le droit sur toute les batteries (admin citrix) “liste serveur”, “logoff session”…
3/ Recherche
Pas de nom de domain, c’est le champ “username” du mfcom
pour trouver “chavers” tu peux utiliser “chave” ou “chaver” ou "chavers"
4/ debug
dans ton registre, soius HKCUsoftwarechaversctxkill tu as un dword “debug” que tu peux passer a 1
puis avec dbgview (sysinternals) tu verras en live l’activité de l’application.
@++
ouais c’est un citrix logoff session tool en multiferme ;D
tiendez la version beta d’ailleurs
ajout du shadowing
filtrage par application publiée
selection de plusieurs sessions (enfin!)
Ben ici nous avons 9 batteries, et bientôt 14
La hotline jongle avec les outils d’admin entre du CPS4 et du XA5 pfff la galere
Salut,
Renaud : Ca marche vachement mieux sur une machine Citrix
Fred : j’ai du mettre le fichier mscomctl.ocx dans le répertoire de l’appli pour la faire fonctionner : nickel
Pour vous 2 : Comment gérez vous la fonction shadowing : je suis occupé à faire une application (en hta car le client ne souhaite de préférence ne pas avoir de fichiers compilés) et je coince sur ce point :
Lorsque je lance le shadowing en ligne de commande :
sCmd = “cshadow " & SessionId & " /SERVER:” & Servername & " /MB"
Set oShell = CreateObject(“WScript.Shell”)
oShell.Run sCmd
J’arrive bien en shadowing mais uniquement sur une fenêtre de la taille d’un cmd… Y a-t-il une méthode que j’ai loupé ?
(Fred si tu as la solution sans compilation => Donnes la à Guillaume à son retour de congés
Merci d’avance,
Sam
Lorsque je lance le shadowing en ligne de commande :
Je ne connais pas de facon de faire du shadow en vbs.... Tu dois appeler la fonction WFShadowSession(A/W) de WFAPI.DLL
en c# ca ressemble a ca:
(...)
[DllImport("WFAPI.dll", EntryPoint = "WFShadowSessionA")]
private static extern bool WFShadowSession(
String ServerName,
long SessionId,
long Hotkey,
long HKModifier);
(...)
MetaFrameCOM.IMetaFrameFarm4 Batterie;
MetaFrameCOM.IMetaFrameServer Server;
MetaFrameCOM.IMetaFrameSession Session;
Batterie = listederetour[(string)MFSession["FarmName"]] as MetaFrameCOM.IMetaFrameFarm4;
Server = Batterie.GetServer(MetaFrameCOM.MetaFrameObjectType.MetaFrameWinSrvObject, (string)MFSession["ServerName"]);
Session = Server.GetSession((int)MFSession["SessionID"]);
if (MessageBox.Show(String.Format("Shadow {0}?nCtrl + Space to quit.", MFSession["UserName"]), "Shadow", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
WFShadowSession(Server.ServerName, Session.SessionID, 20, 2);
}
(...)
- La liste des fermes stockée dans le HKCU peut être un avantage dans certain cas, dans d'autre il risque de falloir faire un ADM pour le gérer par GPO ou modifier le default user/les profils utilisateurs. Il pourrait être intéressant de laisser la possibilité de faire une config dans HKLM (tu as normalement moins de serveurs d'admin que de personne dans ton helpdesk (normalement ;))
Lorsque je lance le shadowing en ligne de commande :
Je ne connais pas de facon de faire du shadow en vbs.... Tu dois appeler la fonction WFShadowSession(A/W) de WFAPI.DLL
Ce que je vais faire comme workaround c'est de faire un EXE qui prendra en paramètre ID session + Server et je le lancerait à la volé depuis le HTA mais du coup il y aura de la compil (mais pas beaucoup :))
Merci pour les infos,
Sam
- La liste des fermes stockée dans le HKCU peut être un avantage dans certain cas, dans d'autre il risque de falloir faire un ADM pour le gérer par GPO ou modifier le default user/les profils utilisateurs. Il pourrait être intéressant de laisser la possibilité de faire une config dans HKLM (tu as normalement moins de serveurs d'admin que de personne dans ton helpdesk (normalement ;))
Const HKEY_CURRENT_USER = &H80000001
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\.rootdefault:StdRegProv")
Set oFarms = CreateObject("Scripting.Dictionary")
Set oShell = CreateObject("WScript.Shell")
strKeyPath = "Software***ctxkill"
oReg.GetStringValue HKEY_CURRENT_USER, strKeyPath, "Lock" ,sLock
If IsNull(sLock) Then
oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
oReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, "Lock" , "Y"
strKeyPath = "Software***ctxkillfarm"
oFarms.Add "farm1", "zdc1"
oFarms.Add "farm2", "zdc2"
oFarms.Add "farm3", "zdc3"
'(...)
oFarms.Add "farm4", "zdc4"
oFarms.Add "farm5", "zdc5"
oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
For Each Farm In oFarms.Keys
oReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, Farm, oFarms.Item(Farm)
Next
End If
oShell.Run "D:win32appctxkillctxkill.exe", 1, TRUE
comme ca ils ont une liste par defaut, avec un loc pour ne pas casser leurs modifications. Evidaement ne GPO était la cible lors du dev...
sinon, tu peux dans ton HTA faire un appel à cshadow.exe l’outil en ligne de commande utilisé par wshadow (la barre de shadowing) pour lancer la session ICA
sCmd = "cshadow " & SessionId & " /SERVER:" & Servername & " /MB"
Set oShell = CreateObject("WScript.Shell")
oShell.Run sCmd
Stéphanie de monaco
moi yen a pas avoir compris le stephanie de monaco
ps: dans citrix logoff session tool j’utilise effectivement WFShadowSessionA