Écriture de scripts avec SWbemObject

L’objet de script SWbemObject est l’objet WMI générique, qui définit des propriétés et des méthodes qui peuvent être utilisées indépendamment de l’objet WMI spécifique auquel l’objet SWbemObject est lié. Tous les objets WMI, tels qu’une instance de _ processus Win32 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.

Par exemple, utilisez le script suivant pour obtenir toutes les instances d’un _ processus Win32 en appelant la méthode SWbemObject. instances _ . ClsobjProcess représente à la fois la définition de classe de _ processus Win32 et un 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 du _ service Win32 qui représente le service d’alerte et le stocke dans objAlerter. Vous pouvez ensuite appeler les méthodes SWbemObject , telles que WScript. Echo ObjAlerter. Path _ , ou les méthodes définies par la classe de données, telles que WScript. Echo objAlerter. State. objAlerter qui représente une instance de service Win32 _ et un 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 à 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 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, par exemple une instance de _ processus Win32, par un appel à _ SWbemObjectEx. Refresh.

L’exemple suivant montre comment les données de défaillance de page de 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 à l’aide d’un objet SWbemRefresher , consultez actualisation des données WMI dans des scripts.

Les objets SWbemObject. _ put et _ PutAsync vous permettent d’écrire des modifications dans n’importe quel objet WMI. Ces méthodes valident uniquement les modifications apportées à un objet dans l’espace de noms dans lequel l’objet a été créé. Vous pouvez écrire l’objet dans un autre espace de noms à l’aide de 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