Compartir a través de


Tareas de WMI: supervisión del rendimiento

Use las clases WMI que obtienen datos de los contadores de rendimiento para acceder a los datos sobre el rendimiento del equipo y actualizarlos. Para ver otros ejemplos, consulte TechNet ScriptCenter en https://www.microsoft.com/technet. Para obtener más información, consulte Bibliotecas de rendimiento y WMI y Supervisar datos de rendimiento.

Los ejemplos de script que se muestran en este tema obtienen datos solo del equipo local. Para más información sobre cómo usar el script para obtener datos de equipos remotos, consulte Conexión a WMI en un equipo remoto.

En el procedimiento siguiente se describe cómo ejecutar un script.

Para ejecutar un script

  1. Copie el código y guárdelo en un archivo con una extensión.vbs, como filename.vbs. Asegúrese de que el editor de texto no agregue una extensión.txt al archivo.
  2. Abra un símbolo del sistema y navegue hasta el directorio donde haya almacenado el archivo.
  3. Escriba cscript filename.vbs en el símbolo del sistema.
  4. Si no puede acceder a un registro de eventos, compruebe si se ejecuta desde un símbolo del sistema con privilegios elevados. Algunos registros de eventos, como el registro de eventos de seguridad, pueden estar protegidos mediante controles de acceso de usuario (UAC).

Nota

De forma predeterminada, cscript muestra la salida de un script en la ventana del símbolo del sistema. Dado que los scripts de WMI pueden generar un número elevado de salidas, es posible que le interese redirigir la salida a un archivo. Escriba cscript filename.vbs > outfile.txt en el símbolo del sistema para redirigir la salida del script filename.vbs a outfile.txt.

La tabla siguiente contiene ejemplos de script que se pueden usar para obtener varios tipos de datos del equipo local.

Cómo... Clases o métodos WMI
... obtener los datos del contador de rendimiento que puedo ver en la utilidad Perfmon en un script Use clases cuyos nombres comiencen por "Win32_PerfFormattedData"; por ejemplo, Win32_PerfFormattedData_PerfProc_Process. Las propiedades con nombres como PageFileBytes corresponden a los contadores de rendimiento que ve en Perfmon. Las clases "Win32_PerfFormattedData" calculan automáticamente los valores finales de contadores para el usuario.
... obtener datos de rendimiento en curso para un único proceso, unidad de disco y otros datos Use Win32_PerfFormattedData_PerfProc_Process o la clase de contador de rendimiento con el formato adecuado y el método SWbemObjectEx.Refresh_. Para obtener más información, consulte Crear scripts con SWbemObject.
En C++, use IWbemConfigureRefresher::AddObjectByPath e IWbemRefresher::Refresh. Para obtener más información, consulte Supervisar datos de rendimiento.
El siguiente script se ejecuta hasta que se reinicia el equipo, se detiene WMI o se detiene el script. Para detener el script manualmente, use el Administrador de tareas y detenga el proceso. Para detenerlo mediante programación, use el método Terminate en la clase Win32_Process.

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

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

... obtener datos de rendimiento en curso para todos los procesos sin sondeo repetido

Use clases que tengan nombres que comiencen por "Win32_PerfFormattedData" y un objeto SWbemRefresher. El actualizador contiene los objetos para que no sea necesario acceder a la colección repetidamente. Se necesitan al menos dos valores para calcular los datos de rendimiento porque la mayoría de los contadores son contadores de velocidad. La primera vez que muestre los datos del actualizador estará vacío.

El siguiente script se ejecuta indefinidamente hasta que se reinicia el equipo, se detiene WMI o se detiene el script. Para detener el script manualmente, use el Administrador de tareas y detenga el proceso. Para detenerlo mediante programación, use el método Terminate en la clase 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

... obtener y calcular los datos de rendimiento de los procesos en Windows 2000

Use las clases "Win32_PerfRawData", como Win32_PerfRawData_PerfProc_Process. Obtenga los datos de propiedad, como PercentProcessorTime, dos veces para un proceso específico. Busque la fórmula especificada en el calificador CounterType para la propiedad y calcule. El valor de CounterType en el ejemplo es PERF_100NSEC_TIMER_INV. Para obtener más información, consulte Supervisar datos de rendimiento.

El siguiente script se ejecuta indefinidamente hasta que se reinicia el equipo, se detiene WMI o se detiene el script. Para detener el script manualmente, use el Administrador de tareas y detenga el proceso. Para detenerlo mediante programación, use el método Terminate en la clase 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

Tareas de WMI para scripts y aplicaciones

Ejemplos de aplicaciones de C++ de WMI

TechNet ScriptCenter