2009-05-22 6 views
3

Comment puis-je utiliser les scripts VB avec WMI pour obtenir le nombre d'utilisateurs connectés. Mon installation ne peut avoir qu'un seul utilisateur connecté et doit signaler une erreur si plus d'un utilisateur est connecté (via un service de terminal utilisant Citrix). Je ne sais pas grand-chose à propos de Citrix mais le Win32_LogonSession avec LogonType = 10 semble retourner toutes sortes de déchets (sessions de ports, etc.). J'ai juste besoin des utilisateurs ... y at-il des appels WMI que je peux juste obtenir le nombre d'utilisateurs connectés à Citrix? Voici un petit coup de mon code VB:VB utilisant WMI - connectez-vous aux utilisateurs

Set objWMIService = _ 
    GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & _ 
    strComputer & "\root\cimv2") 
Set colComputer = _ 
    objWMIService.ExecQuery("Select * from Win32_LogonSession Where LogonType = 10") 

Merci! -JP

Répondre

3

Le code suivant devrait vous aider (utiliser strComputer="." pour ordinateur local ou strComputer="MachineName"):

strComputer = "." 
Set objWMI = GetObject("winmgmts:" _ 
       & "{impersonationLevel=impersonate}!\\" _ 
       & strComputer & "\root\cimv2") 


Set colSessions = objWMI.ExecQuery _ 
    ("Select * from Win32_LogonSession Where LogonType = 10") 


If colSessions.Count = 0 Then 
    Wscript.Echo "No interactive users found" 
Else 
    WScript.Echo "RDP Sessions:" 
    For Each objSession in colSessions 

    Set colList = objWMI.ExecQuery("Associators of " _ 
     & "{Win32_LogonSession.LogonId=" & objSession.LogonId & "} " _ 
     & "Where AssocClass=Win32_LoggedOnUser Role=Dependent") 
    For Each objItem in colList 
     WScript.Echo "Username: " & objItem.Name & " FullName: " & objItem.FullName 
    Next 
    Next 
End If 

Le code original est ici:

How to show logged on users? (Tek-Tips Forums)

Ce collaboraient avec les Windows 2003, je ne peux pas faire de garantie sur la version ultérieure.

+0

Cela ne fonctionne pas vraiment, du moins pas dans Win7 ou 2008 R2. Le code fonctionne correctement, mais il renvoie plusieurs instances du même compte et signale les comptes qui ont peut-être ouvert une session il y a longtemps, mais qui ne sont pas connectés maintenant. –

+0

@RyanRies - cette réponse a été écrite en 2009, et étant donné la date d'origine de l'article source lié à qui était 2006, il fonctionne probablement uniquement avec Windows 2000/2003. Je vais clarifier cela dans ma réponse. – Kev

Questions connexes