Scripts avec SWbemObject

L’objet de script SWbemObject est l’objet WMI générique, qui définit les propriétés et méthodes utilisables indépendamment de l’objet WMI spécifique auquel l’objet SWbemObject est lié. Tous les objets WMI, tels qu’une instance de Win32_Process ou toute autre classe de données WMI, sont représentés par SWbemObject, et peuvent utiliser les propriétés et méthodes communes SWbemObject en plus de leurs propres propriétés et méthodes particulières.

Par exemple, utilisez le script suivant pour obtenir toutes les instances de Win32_Process en appelant la méthode SWbemObject.Instances_. clsobjProcess représente à la fois la définition de la classe Win32_Process et un objet SWbemObject.

strComputer = "."
Set objWMIServices = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set clsobjProcess = objWMIServices.Get("Win32_Process")
Set colProcesses = clsobjProcess.Instances_()
For Each Process in colProcesses
    WScript.Echo Process.Name
Next

L’exemple suivant obtient une instance spécifique de Win32_Service qui représente le service Alerter et la stocke dans objAlerter. Vous pouvez ensuite appeler des méthodes SWbemObject, comme WScript.Echo objAlerter.Path_, ou des méthodes définies par la classe de données, telles que WScript.Echo objAlerter.State. objAlerter qui représente à la fois une instance de Win32_Service et un objet SWbemObject.

strComputer = "." 
Set objWMIServices = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set objAlerter = objWMIServices.Get("Win32_Service.Name='Alerter'")
WScript.Echo objAlerter.Path_
objAlerter.StopService()
WScript.Echo objAlerter.State
For each Prop in myObject.Properties_
    Wscript.Echo Prop.Name
Next

L’appel de SWbemObject.Instances_ obtient un autre objet de script WMI générique, SWbemObjectSet. Comme indiqué, l’objet SWbemObjectSet peut être traité comme une collection.

Set clsobjProcess = objWMIServices.Get("Win32_Process")

Vous pouvez facilement identifier les méthodes SWbemObject, car elles se terminent toutes par un trait de soulignement (_), par exemple SWbemObject.Instances_.

SWbemObjectEx étend les propriétés de SWbemObject. Par exemple, vous pouvez maintenant mettre à jour les données de n’importe quel objet WMI, tel qu’une instance de Win32_Process, en appelant SWbemObjectEx.Refresh_.

L’exemple suivant montre de quelle manière les données d’erreur de page du processus système peuvent être actualisées toutes les cinq secondes.

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'System'",,48) 
For Each Process in colProcesses
        i = 0
        Do Until i = 5
            i = i + 1
            Wscript.Echo "PageFaults = " & Process.PageFaults 
            Wscript.Sleep 10000
            Process.Refresh_
        Loop
Next

Pour plus d’informations sur l’actualisation des données au moyen d’un objet SWbemRefresher, consultez Actualisation des données WMI dans les scripts.

Les méthodes SWbemObject.Put_ et PutAsync_ vous permettent de réécrire les modifications dans n’importe quel objet WMI. Ces méthodes commitent uniquement les modifications apportées à un objet dans l’espace de noms où l’objet a été créé. Vous pouvez écrire l’objet dans un autre espace de noms en utilisant SWbemServicesEx.Put ou SWbemServicesEx.PutAsync.

API de script pour WMI

Création d’un script WMI

Mise à jour d’une instance entière

Appel d’une méthode