WMI et la supervision
Par Blogger




WMI un outil de supervision

WMI (Windows Management Instrumentation) est l’implémentation de Microsoft du Web-Based Enterprise Management (WBEM), le standard du Distributed Management Task Force (DMTF). Il prend en charge le modèle de données CIM (Common Information Model), qui décrit les objets d'un environnement de gestion.
WMI permet de surveiller et contrôler les ressources systèmes de windows. Grâce à lui, vous pouvez récupérer énormément d'informations de votre machine en local mais aussi des machines distantes.

Comme je l'explique plus haut, WMI suit un modèle (CIM) dans lequel vous allez piocher pour obtenir les informations que vous cherchez.

Comment obtenir les données ?

Tout simplement en effectuant des requêtes proches de SQL, j'ai nommé WQL.(si vous maîtrisez la norme SQL, vous n'aurez pas de difficultés à vous y retrouver).

Exemple de requête :

"SELECT * FROM Win32_LogicalDisk WHERE FreeSpace < 2000000"




En plus de récupérer des informations de supervision, vous pouvez aussi agir sur vos machines, par exemple pour installer ou désinstaller des programmes:

Exemple de script:

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
    ("Select * from Win32_Product " _
        & "Where Name = 'Personnel database'")
For Each objSoftware in colSoftware
    objSoftware.Uninstall()
Next



Enfin, WMI contient une infrastucture évènementielle qui vous alertera en fonction de votre politique de supervision.

Exemple de script: (Lorsqu'un évènement windows apparait, une action est déclenchée. Dans ce cas, un popup)

Sub SINK_OnObjectReady(objObject, objAsyncContext)
    WScript.Echo (objObject.TargetInstance.Message)
End Sub

Set objWMIServices = GetObject( _
    "WinMgmts:{impersonationLevel=impersonate, (security)}")

' Create the event sink object that receives the events
Set sink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
 
' Set up the event selection. SINK_OnObjectReady is called when
' a Win32_NTLogEvent event occurs
objWMIServices.ExecNotificationQueryAsync sink, _
    "SELECT * FROM __InstanceCreationEvent " & _
    "WHERE TargetInstance ISA 'Win32_NTLogEvent' "

WScript.Echo "Waiting for events"



Quels sont les avantages de WMI pour la supervision et gestion de réseau ?:
avantages :
- Une base de données importante (vous trouverez forcément votre bonheur)
- Un accès ouvert et simple (WQL) aux données
- Accès aux informations à distance (nécessite droits administrateur sur la machine distante et ouverture firewall)


inconvénients :

- Uniquement pour les plateformes windows
- Peu d'informations réseaux par rapport à SNMP
- Natif à partir de Windows 2000 SP4

Conclusion:
WMI reste un outil très pratique pour la supervision système de machine sous windows. il permet d'obtenir un grand nombre d'informations sans faire appel à des API particulières.
Cependant, il ne peut pas assurer, seul, une surveillance efficace de part son manque de compatibilité avec les autres systèmes d'exploitation.

Pour vous montrer quelques capacités de cet outil, NetForge vous a développé un gratuiciel. Il scanne les informations systèmes et les programmes installés des machines de vos réseaux.
Vous pourrez le télécharger à l'adresse suivante :
http://www.netforge.fr/telecharger/SetupNetWMIScanner.exe