Comment connaitre le nombre de couleurs dans une session ?

Je cherche le moyen de connaitre le nombre de couleurs dans une session ICA au niveau du logon car je dois mettre a jour la configuration utilisateur d’une application si elle est utilisé en 256 couleurs



J’ai trouve ce script MCOM mais il faut être admin citrix pour le lancer



Set objFarm = CreateObject(“MetaFrameCOM.MetaFrameFarm”)

objFarm.Initialize(1)

For Each objSession In objFarm.Sessions

WScript.Echo "COLOR: " & objSession.ClientColorDepth

Next



Comment interroger juste une session sans scanner toutes les sessions de la ferme ?



Comment faire pour avoir ces informations avec des droits utilisateurs ( script executer en script de logon )



Merci pour les infos

Tu peux utiliser le wfapi car il ne necessite pas d’être admin, par contre impossible de l’utiliser via du vbs, il faut forcement passer par du .net, … .

http://support.citrix.com/servlet/KbServlet/download/2293-102-8614/CitrixServer_SDK_WFAPI_2_2.pdf



Il me semble qu’il existe une methode qui consiste à développer un autre objet MFcom qui va interroger le mfcom avec des droits d’admins, Thin cela te dit qqchose ?

tu as effectivement le bon objet MFCOM pour récupérer l’info mais il faut etre admin de la ferme ou, tout du moins, avoir le droit de lister les sessions et récupérer les information de session.



une autre méthode serait d’interroger sysparameterinfo (l’API windows) mais suivant les GPOs en place sur le serveur cet accès serait impossible : si ton user ne peut pas afficher les propriétés d’affichage/paramètres alors l’API retournera une erreur.



sinon, il faut faire en sorte que tout le monde se connecte en 65K ou 16M couleurs… :slight_smile:

Il te restes la solution megabidouille pas secure du tout avec le script xrunas.vbs dispo chez belamy.

xrunas c’est comme un runas mais avec la possibilité de stocker le mot de passe.

http://www.bellamyjc.org/fr/vbsdownload.html#xrunas

donc tu lances ton script vbs via xrunas avec un compte admin, c’est pas beau mais cela doit marcher …

Soit je donne les droits de lister les sessions a tous les utilisateurs ==> mais c est quoi l’impact ?



soit j’utilise xrunas



pour le reste je ne connais pas .net



Merci pour vos réponses.

l’impact ? aucun. car tu peux aussi leur interdire de lancer les consoles d’admin :slight_smile: donc t’es safe…



mais j’ai encore jamais testé :slight_smile:

Je dois lancer ce script par script de logon



Mais j’ai des 2 craintes :



J’ai une ferme Citrix de 1600 utilisateurs, les serveurs sont regroupés dans 3 zones ( Correspondant a des sites différents )


  • Le script liste tous les utilisateurs de la ferme avant de trouver les information sur l’utilisateur et j’ai 1600 users dans ma ferme donc j’ai pur que le logon soit ralenti : existe-il un moyen d’avoir juste des informations sur la session utilisateurs en cours sans faire une requête sur tous les utilisateurs de la ferme.


  • Lors du logon le matin beaucoup d’utilisateurs en simultanés vont faire cette requête et la j’ai peur que les temps de réponse soit trés long.



    Comment MFCOM récupére ces informations : Il interroge le data collector ?



    Avez vous un abis sur le sujet

suivant les infos demandées oui MFCOM tape le DC… mais ce n’est pas MFCOM qui le fait… c’est IMA



Appli ==> MFCOM service ==> IMA ==> DC si nécessaire



tu peux énumérer les sessions sur uniquement le serveur en cours, ce qui semble logique non ? via l’initialisation de l’objet MetaFrameServer.Sessions tu ne pas plus interroger que le serveur actuel… via IMA

j’arrive a enumerer tous les serveurs de la fermes puis voir les sessions de ce serveurs



Par contre comment selectionner par script mfcom juste le serveur concerné ?



merci pour votre aide

Set WshNetwork = CreateObject(“WScript.Network”)



lstrUserName = WshNetwork.UserName

strComputer = WshNetwork.ComputerName



if Instr ([variable_Serveur],strComputer ) = 0 then

ton action à réaliser

end if



Pose ton script, cela sera plus rapide.

Salut,



@bm, passe le groupe “utilisateur du domaine” en “view only” comme admin Citrix puis avec ce script…

ClientColorDepth.wsf






Option Explicit
Dim ws
Set ws = WScript.CreateObject("WScript.Shell")
Dim pe, ServerName, usr
Set pe = ws.Environment("PROCESS")
ServerName = pe("COMPUTERNAME")
usr = pe("USERNAME")
Dim s,aSession
Set s = CreateObject("MetaFrameCOM.MetaFrameServer")
s.Initialize MetaFrameWinSrvObject, ServerName
For Each aSession In s.Sessions
If aSession.UserName = usr Then
WScript.Echo aSession.UserName &" "& aSession.SessionID &" "& aSession.ClientColorDepth
End If
next




Super cela fonctionne merci encore



Par contre j’ai un peu de mal avec MFCOM



J’aimerais comprendre la ligne



s.Initialize MetaFrameWinSrvObject, ServerName



C’est quoi MetaFrameWinSrvObject ?



Pourquoi il faut mettre objFarm.Initialize(1) et parfois objFarm.Initialize(6)

"chavers" wrote:
Et enfin pour répondre a ta premier question:
Si Citrix utilise des .WSF et pas des .VBS c'est pour pouvoir ajouter la ligne:


car dans ton script
theFarm.Initialize(MetaFrameWinFarmObject)

MetaFrameWinFarmObject est un constante que ton .vbs ne connait pas!
MetaFrameWinFarmObject = 1 donc quand tu met 1 ca fonctionne.

Voici la liste des constantes que tu peux utilisé:

' MetaFrame Object Types
const MetaFrameUnknownObject = 0 ' "MFCOM Unknown Object"
const MetaFrameWinFarmObject = 1 ' "MFCOM Windows Farm Object"
const MetaFrameZoneObject = 2 ' "MFCOM Zone Object"
const MetaFrameWinAppObject = 3 ' "MFCOM Windows Application Object"
const MetaFrameLicenseObject = 4 ' "MFCOM License Object"
const MetaFrameAcctAuthObject = 5 ' "MFCOM Account Authority Object"
const MetaFrameWinSrvObject = 6 ' "MFCOM Windows Server Object"
const MetaFrameUserObject = 7 ' "MFCOM User Object"
const MetaFrameGroupObject = 8 ' "MFCOM Group Object"
const MetaFrameProcessObject = 9 ' "MFCOM Process Object"
const MetaFrameSessionObject = 10 ' "MFCOM Session Object"
const MetaFrameChannelObject = 11 ' "MFCOM Virtual Channel Object"
const MetaFrameAppFolder = 12 ' "MFCOM Application Folder Object"
const MetaFrameSrvFolder = 13 ' "Server Folder Object"
const MetaFrameIMSAppObject = 14 ' "MFCOM Installation Manager Service Application Object"
const MetaFrameRMSAppObject = 15 ' "MFCOM Resource Manager Service Application Object"
const MetaFrameUnixAppObject = 16 ' "MFCOM UNIX Application Object"
const MetaFrameContentObject = 17 ' "MFCOM Published Content Object"
const MetaFrameFileTypeObject = 18 ' "MFCOM File Type Object"
const MetaFrameUserPolicyObject = 19 ' "MFCOM User Policy Object"
const MetaFrameSessionPolicyObject = 19 ' "MFCOM Session Policy Object"
const MetaFrameLicenseSetObject = 20 ' "MFCOM License Set Object"
const MetaFrameLicenseNumberObject = 21 ' "MFCOM License Number Object"
const MetaFrameAccountFolder = 22 ' "MFCOM Account Folder Object"
const MetaFramePrinterObject = 23 ' "MFCOM Printer Object"
const MetaFramePrinterDriverObject = 24 ' "MFCOM Printer Driver Object"
const MetaFrameAdminObject = 25 ' "MFCOM Administrator Object"
const MetaFrameMeObject = 26 ' "MFCOM ME Object"
const MetaFrameLoadEvaluatorObject = 27 ' "MFCOM Load Evaluator Object"
const MeltaFrameSessionPolFilterObject = 28 ' "MFCOM Policy Filter Object"
const MetaFrameAppliedPolicyObject = 29 ' "MFCOM Applied Policy Object"
const MetaFrameFileObject = 30 ' "MFCOM File Object"
const MetaFrameIconObject = 31 ' "MFCOM Icon Object"
const MetaFrameVIPRangeObject = 32 ' "MFCOM Virtual IP Range Object"
const MetaFrameLMRuleObject = 33 ' "MFCOM Load Manager Rule Object"
const MetaFrameAIEObject = 34 ' "MFCOM AIE Object"
const MetaFrameAIEFolder = 35 ' "MFCOM AIE Folder Object"
const MetaFrameAIERuleObject = 36 ' "MFCOM AIE Rule Object"
const MetaFrameHotfixObject = 37 ' "MFCOM Hotfix Object"

' Account Authorities
const MFAccountAuthorityUnknown = 0 ' "Unknown Account Authority"
const MFAccountAuthorityNTDomain = 1 ' "NT Domain"
const MFAccountAuthorityNDS = 2 ' "Novell Directory Services"
const MFAccountAuthorityADS = 3 ' "Windows Active Directory"

' Acount Types
const MFAccountTypeUnknown = 0 ' "Unknown Account Type"
const MFAccountLocalUser = 1 ' "Local User"
const MFAccountDomainUser = 2 ' "Domain User"
const MFAccountLocalGroup = 3 ' "Local Group"
const MFAccountGlobalGroup = 4 ' "Global Group"
const MFAccountUniversalGroup = 5 ' "Universal Group"
const MFAccountDomainLocalGroup = 6 ' "Domain Local Group"
const MFAccountFolder = 7 ' "Account Folder"

' PN Attributes
const MFWinAppPNAttrNone = 0
const MFWinAppDisabled = 1
const MFWinAppMinimumSound = 2
const MFWinAppMinimumEncrypt = 4
const MFWinAppDesktop = 8 ' "Published Desktop"
const MFWinAppAnonymous = 16 ' "Anonymous Application"

' MetaFrame Color Selections
const MFWinColorUnknown = 0
const MFWinColor16 = 1
const MFWinColor256 = 2
const MFWinColor64K = 3
const MFWinColor16M = 4

' MetaFrame Window Type
const MFWinWindowUnknown = 0
const MFWinWindow640X480 = 1
const MFWinWindow800X600 = 2
const MFWinWindow1024X768 = 3
const MFWinWindow1280X1024 = 4
const MFWinWindowCustom = 5
const MFWinWindowPercent = 6
const MFWinWindowFullScreen = 7
const MFWinWindow1600X1200 = 8


Donc objFarm.Initialize(1) = "MFCOM Windows Farm Object"
et objFarm.Initialize(6) = "MFCOM Windows Server Object"

je te conseille le lecture de ca:UltimateGuideToMFCOM.pdf

R.T.F.M.



:chav_mouarf2: :RTFM2: :RTFM2:

Merci pour toutes les infos