Sur une ferme XP FR3, j’avais besoin d’un script qui désactive le logon et clos les sessions en cours sur certains serveurs de la ferme.
Pour cela, j’ai récupéré des scripts dispo sur le web que j’ai adapté à mon besoin (vbs).
Je bute toujours sur un problème qui est assez récurrent lorsque je code des scripts mfcom :
Après la création de l’objet, l’initialisation ne se fait que si le paramètre est 1 (alors que le paramètre est toujours MetaFrameWinFarmObject dans les codes dispo en ligne). cf exemple ci-dessous :
Set theFarm = CreateObject("MetaFrameCOM.MetaFrameFarm")
'theFarm.Initialize(MetaFrameWinFarmObject)
theFarm.Initialize(1)
En fait j’aimerais bien comprendre.
2) Ce qui m’amène à mon deuxième problème : je n’arrive pas à faire fonctionner la méthode logoff de l’objet session. ex :
For each session in aserver.sessions
WScript.Echo " Client Name : " & Session.ClientName
Session.Logoff(2)
next
-> j’ai essayé avec comme paramètre entre () 0,1 , TRUE. Sans résultat. La session est bien vue (vérif par le echo) mais le message d’erreur reste “argument ou procedure d’appel incorrect”. Si quelqu’un a l’explication concernant le role du paramètre en tre(), je suis preneur.
-> j'ai essayé avec comme paramètre entre () 0,1 , TRUE. Sans résultat. La session est bien vue (vérif par le echo) mais le message d'erreur reste "argument ou procedure d'appel incorrect". Si quelqu'un a l'explication concernant le role du paramètre en tre(), je suis preneur.
Le paramètre entre parenthèse est un booléen, vrai=demande le logoff et attend la fin de la session pour rendre la main. faux=demande le logoff et passe au suivant. donc dans ta boucle un FAUX te fait gagné du temps.
Public: HRESULT Logoff(
BOOL bWait
);
bWait
If the calling process will wait for the logoff to complete, set this parameter to TRUE. If the calling process wants the property to immediately return, set this parameter to FALSE.
Dim theFarm, aServer, aSession
on error resume next
Set theFarm = CreateObject("MetaFrameCOM.MetaFrameFarm")
WScript.Echo "MetaFrame Farm Name: " & theFarm.FarmName
theFarm.Initialize (1)
For Each aServer In theFarm.Servers
if Lcase(aServer.ServerName) = Lcase("lenomduserveur") then
For Each aSession In aServer.Sessions
WScript.Echo aSession.UserName
aSession.logoff(false)
next
end if
Next
Merci pour tes réponses sur mes soucis de scripts et d’explications MFCOM.
Par contre, j’ai repris ton dernier script -sans modif- et testé sur ma ferme. J’ai le même résultat que précedement “Argument ou appel de procédure incorrect” rc=800A0005.
J’ai lancé le script depuis plusieurs serveurs de la ferme sans plus de succès.
Les serveurs de la ferme ne sont pas vraiment up-to-date, n’y aurait-il pas quelques hotfixs pour les objets MFCOM ?
Sur quel ligne a tu l’erreur ? si c’est au logoff verifie que tu as bien on “error resume next” avant dans le code. Car le script essaie de faire un logoff de toute les sessions (local ID 0, et les queue ICA et TCP)