Tareas WMI: supervisión del rendimiento

Utilice las clases WMI que obtienen datos de contadores de rendimiento para obtener acceso y actualizar datos sobre el rendimiento del equipo. Para ver otros ejemplos, vea el ScriptCenter de TechNet en https://www.microsoft.com/technet . Para obtener más información, consulte bibliotecas de rendimiento y WMI y supervisión de datos de rendimiento.

Los ejemplos de scripts que se muestran en este tema obtienen datos solo del equipo local. Para obtener más información acerca de 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 la extensión. vbs, como filename.vbs. Asegúrese de que el editor de texto no agrega una extensión. txt al archivo.
  2. Abra una ventana del símbolo del sistema y navegue hasta el directorio en el que guardó el archivo.
  3. Escriba cscript filename.vbs en el símbolo del sistema.
  4. Si no puede obtener acceso a un registro de eventos, compruebe si está ejecutando desde un símbolo del sistema con privilegios elevados. Algunos registros de eventos, como el registro de eventos de seguridad, pueden estar protegidos por 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 grandes cantidades de resultados, es posible que desee redirigir la salida a un archivo. Escriba cscript filename.vbs > outfile.txt en el símbolo del sistema para redirigir la salida del script de filename.vbs a outfile.txt.

En la tabla siguiente se enumeran ejemplos de scripts que se pueden usar para obtener distintos tipos de datos del equipo local.

Cómo... Clases o métodos WMI
... obtener los datos del contador de rendimiento que se pueden ver en la utilidad Perfmon en un script Utilice clases que tengan nombres que comiencen por " Win32_PerfFormattedData " , por ejemplo Win32_PerfFormattedData_PerfProc_Process. Las propiedades con nombres como PageFileBytes se corresponden con los contadores de rendimiento que se ven en Perfmon. Las " clases de Win32_PerfFormattedData " calculan los valores finales de los contadores.
... obtener datos de rendimiento en curso para un único proceso, unidad de disco y otros datos Use el Win32_PerfFormattedData_PerfProc_Process o la clase de contador de rendimiento con formato adecuada y el método SWbemObjectEx.Refresh_ . Para obtener más información, consulte scripting con SWbemObject.
En C++, use IWbemConfigureRefresher:: AddObjectByPath y IWbemRefresher:: Refresh. Para obtener más información, vea 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 para detener 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 sondeos repetidos

Utilice clases que tengan nombres que comiencen por " Win32_PerfFormattedData " y un objeto SWbemRefresher . El actualizador contiene los objetos, por lo que no es necesario obtener la colección repetidamente. Se necesita un mínimo de dos valores para calcular los datos de rendimiento, ya que la mayoría de los contadores son de frecuencia. La primera vez que se muestran los datos del actualizador están vacíos.

El script siguiente 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 para detener 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

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

El script siguiente 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 para detener 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

ScriptCenter de TechNet