Tâches WMI : Analyse des performances

Utilisez les classes WMI qui obtiennent des données à partir de compteurs de performances pour accéder aux données relatives aux performances de l’ordinateur et les actualiser. Pour obtenir d’autres exemples, consultez TechNet ScriptCenter à l’adresse https://www.microsoft.com/technet. Pour plus d’informations, consultez Bibliothèques de performances et WMI et Surveillance des données de performances.

Les exemples de script présentés dans cette rubrique n’obtiennent des données qu’à partir de l’ordinateur local. Pour plus d’informations sur l’utilisation du script afin d’obtenir des données provenant d’ordinateurs distants, consultez Connexion à WMI sur un ordinateur distant.

La procédure suivante explique comment exécuter un script.

Pour exécuter un script

  1. Copiez le code, puis enregistrez-le dans un fichier avec l’extension .vbs, par exemple nomfichier.vbs. Vérifiez que votre éditeur de texte n’ajoute pas d’extension .txt au fichier.
  2. Ouvrez une fenêtre d’invite de commandes, puis accédez au répertoire où vous avez enregistré le fichier.
  3. Tapez cscript nomfichier.vbs à l’invite de commandes.
  4. Si vous ne pouvez pas accéder à un journal des événements, vérifiez si vous exécutez la commande à partir d’une invite de commandes avec élévation de privilèges. Certains journaux des événements, par exemple le journal des événements de sécurité, peuvent être protégés par la fonctionnalité UAC (contrôle de compte d’utilisateur).

Notes

Par défaut, cscript affiche la sortie d’un script dans la fenêtre d’invite de commandes. Dans la mesure où les scripts WMI peuvent produire de grandes quantités de données en sortie, vous pouvez être amené à rediriger la sortie vers un fichier. Tapez cscript nomfichier.vbs > fichiersortie.txtà l’invite de commandes pour rediriger la sortie du scriptnomfichier.vbs vers fichiersortie.txt.

Le tableau suivant liste des exemples de script qui peuvent être utilisés pour obtenir divers types de données à partir de l’ordinateur local.

Comment puis-je... Classes ou méthodes WMI
... obtenir les données du compteur de performances que je peux voir dans l’utilitaire Perfmon dans un script ? Utilisez des classes dont les noms commencent par « Win32_PerfFormattedData », par exemple Win32_PerfFormattedData_PerfProc_Process. Les propriétés avec des noms tels que PageFileBytes correspondent aux compteurs de performances que vous voyez dans Perfmon. Les classes « Win32_PerfFormattedData » calculent les valeurs finales des compteurs pour vous.
... obtenir des données de performances en cours pour un seul processus, un lecteur de disque et d’autres données ? Utilisez le Win32_PerfFormattedData_PerfProc_Process ou la classe de compteur de performances au format approprié et la méthode SWbemObjectEx.Refresh_. Pour plus d’informations, consultez Scripting with SWbemObject.
En C++, utilisez IWbemConfigureRefresher::AddObjectByPath et IWbemRefresher::Refresh. Pour plus d’informations, consultez Surveillance des données de performances.
Le script suivant s’exécute jusqu’à ce que l’ordinateur soit redémarré, que WMI soit arrêté ou que le script soit arrêté. Pour arrêter le script manuellement, utilisez le Gestionnaire des tâches pour arrêter le processus. Pour l’arrêter par programmation, utilisez la méthode Terminate dans la classe Win32_Process.

VB
strComputer = « . » Set objWMIService = GetObject(« winmgmts: » _ & « {impersonationLevel=impersonate}!\\ » _ & strComputer & « \root\cimv2 ») set PerfProcess = objWMIService.Get(_ « Win32_PerfFormattedData_PerfProc_Process.Name='Idle' ») 

Alors que (True) PerfProcess.Refresh_
Wscript.Echo PerfProcess.PercentProcessorTime Wscript.Sleep 1000 Wend

... obtenir des données de performances en cours pour tous les processus sans interrogation répétée ?

Utilisez des classes dont les noms commencent par « Win32_PerfFormattedData » et un objet SWbemRefresher. L’actualisation contient les objets afin que vous n’ayez pas besoin d’obtenir la collection à plusieurs reprises. Un minimum de deux valeurs est nécessaire pour calculer les données de performances, car la plupart des compteurs sont des compteurs de débit. La première fois que vous affichez les données de l’actualisation, elles sont vides.

Le script suivant s’exécute indéfiniment jusqu’à ce que l’ordinateur soit redémarré, que WMI soit arrêté ou que le script soit arrêté. Pour arrêter le script manuellement, utilisez le Gestionnaire des tâches pour arrêter le processus. Pour l’arrêter par programmation, utilisez la méthode Terminate dans la classe Win32_Process.

VB
strComputer = « . » Set objWMIService = GetObject(« winmgmts: » _ & « {impersonationLevel=impersonate}!\\ » _ & strComputer & « \root\cimv2 ») set objRefresher = CreateObject(« WbemScripting.Swbemrefresher ») Set objProcessor = objRefresher.AddEnum _ (objWMIService, _ « Win32_PerfFormattedData_PerfOS_Processor »). Objectset 

While (True) objRefresher.Refresh For each RefreshItem in objRefresher For each objProcess in RefreshItem.ObjectSet Wscript.Echo objProcess.GetObjectText_ Next Next Wscript.Sleep 5000 Wend

... obtenir et calculer des données de performances pour les processus sur Windows 2000 ?

Utilisez les classes « Win32_PerfRawData », telles que Win32_PerfRawData_PerfProc_Process. Obtenez les données de propriété, telles que PercentProcessorTime, deux fois pour un processus spécifique. Recherchez la formule spécifiée dans le qualificateur CounterType pour la propriété et calculez. Le CounterType dans l’exemple est PERF_100NSEC_TIMER_INV. Pour plus d’informations, consultez Surveillance des données de performances.

Le script suivant s’exécute indéfiniment jusqu’à ce que l’ordinateur soit redémarré, que WMI soit arrêté ou que le script soit arrêté. Pour arrêter le script manuellement, utilisez le Gestionnaire des tâches pour arrêter le processus. Pour l’arrêter par programmation, utilisez la méthode Terminate dans la classe Win32_Process.

VB
strComputer = « . » Set objWMIService = GetObject(« winmgmts: » _ & « {impersonationLevel=impersonate}!\\ » _ & strComputer & « \root\cimv2 ») 

While (True) Set object1 = objWMIService.Get( _ "Win32_PerfRawData_PerfOS_Processor.Name='_Total'") N1 = object1.PercentProcessorTime D1 = object1.TimeStamp_Sys100NS Wscript.Sleep(1000) set object2 = objWMIService.Get( _ "Win32_PerfRawData_PerfOS_Processor.Name='_Total'") N2 = object2.PercentProcessorTime D2 = object2.TimeStamp_Sys100NS ' CounterType - PERF_100NSEC_TIMER_INV ' Formula - (1- ((N2 - N1) / (D2 - D1))) x 100 PercentProcessorTime = (1 - ((N2 - N1)/(D2-D1)))*100 Wscript.Echo "% Processor Time=" , PercentProcessorTime Wend

Tâches WMI pour les scripts et les applications

Exemples d’applications WMI C++

TechNet ScriptCenter