[Résolu] WMI requete WQL

WMI requete WQL [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 09-10-2007 à 11:32:47    

Bonjour a tous,
 
Je voudrai récupérer le nombre de connexions sur mes partages sur un de mes serveurs mais en évitant les doublons... (je fais ma requete par adresse ip)
Le soucis qui se pose est que en WQL on ne peut pas faire de Select Distinct..... en wql
 
Quelqu'un aurait une idée pour moi ???
 
Merci de votre aide


Message édité par alexolait le 12-10-2007 à 11:23:29
Reply

Marsh Posté le 09-10-2007 à 11:32:47   

Reply

Marsh Posté le 12-10-2007 à 11:22:57    

Pour ceux que ça interesse j'ai trouvé une façon detournée sans passer par une requete wql....
J'ai trouvé comment compter le nombre de session qui ont des fichiers ouvert sur un serveur Windows 2000 / 20003.
 
Le script que j'ai écrit est à la base pour le plugin NSCLIENT++ de Nagios... c'est pour cela qu'a la fin je mets des conditions en fonction du résultat obtenu.
Les lignes qui commencent par REM sont des lignes commentées.Si on enleve ces commentaires on aura le nom d'utilisateur, l'ip ... en sortie
Pour utiliser ce script, il faut l'enregistrer avec l'extension .wsf
Pour l'utiliser il faut mettre les arguments du seuil warning et critique
Exemple: NbSessions.wsf <arg1> <arg2>  
Arg1 et Arg2 doivent des chiffres (nb de sessions). Arg1 pour le seuil warning et Arg2 pour le seuil critique
Pour l'executer il faut utiliser l'invite de commande.
En esperant qu'il serve a quelqu'un un jour.... :)  
 

Code :
  1. <job>
  2. <script language="VBScript">
  3. strComputer = "."
  4. strWarningValue = Wscript.Arguments(0)
  5. strCriticalValue = Wscript.Arguments(1)
  6. SessionCount = 0
  7. Const intOK = 0
  8. Const intWarning = 1
  9. Const intCritical = 2
  10. Dim objComputer, objSession
  11. Set objComputer = GetObject("WinNT://" & strComputer & "/LanManServer" )
  12. For Each objSession in objComputer.Sessions
  13. REM strOutput = strOutput & "Session Object Name: "& objsession.Name & vbCrlf
  14. REM strOutput = strOutput & "Session Computer Name: "& objsession.Computer & vbCrlf
  15. SessionCount = SessionCount + 1
  16. REM strOutput = strOutput & "Seconds connected: " & objSession.ConnectTime & vbCrlf
  17. REM strOutput = strOutput & "Seconds Idle: "& objsession.IdleTime & vbCrlf
  18. REM strOutput = strOutput & "Connected User:"& objsession.USer & vbCrlf
  19. REM strOutput = strOutput & vbCrlf
  20. Next
  21. SessionCount = Int(SessionCount)
  22. strWarningValue = Int(strWarningValue)
  23. strCriticalValue = Int(strCriticalValue)
  24. If ( SessionCount > strWarningValue ) or ( SessionCopunt > strCriticalValue ) Then
  25.   If (SessionCount > strCriticalValue) Then
  26.      Wscript.Echo "CRITICAL: NB of Sessions is " & SessionCount & "."
  27.      Wscript.Quit(intCritical)
  28.   End If
  29.   If (SessionCount > strWarningValue) Then
  30.     Wscript.Echo "WARNING: NB of Sessions is " & SessionCount & "."
  31.     Wscript.Quit(intWarning)
  32.   End If
  33. End If
  34. Wscript.Echo "OK: NB of Sessions is " & SessionCount & "."
  35. Wscript.Quit(intOK)
  36. </script>
  37. </job>


Message édité par alexolait le 12-10-2007 à 11:24:45
Reply

Marsh Posté le 11-12-2007 à 19:19:21    

toi t'es un bon :)
c'est cool !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed