You are here: > Administration > Scripts > WMI > JScript > Win32_PerfRawData_PerfProc_Thread

ActiveXperts Network Monitor ships with a large collection of WMI based PowerShell scripts and VBScript scripts to monitor and manage a network.

Use ActiveXperts Netork Monitor to monitor your virtualization servers, domains, computers and devices. It runs on a single Windows server, without agents required on the monitored systems. It has many built-in checks and also allows administrators to create custom checks using PowerShell, VBScript, WMI and SSH.

Win32_PerfRawData_PerfProc_Thread - WMI sample in JScript

The foundations for Manageability in Windows 7/2008/Vista/XP/2000 and Millennium Edition/'98 are Windows Management Instrumentation (WMI; formerly WBEM) and WMI extensions for Windows Driver Model (WDM).

ActiveXperts Network Monitor provides the ability to build monitor check routines based on WMI. ActiveXperts has collected more than a hundred WMI samples. You can use these samples as a base for new check routines you can write yourself.

On this site, you can find many WMI samples.



The Win32_PerfFormattedData_PerfProc_Thread "cooked" data performance counter class represents calculated counters that measure aspects of thread behavior. A thread is the basic object that executes instructions on a processor. All running processes have at least one thread. This class is shown as the Thread object in System Monitor. The WMI source of its data is the high-performance Cooked Counter Provider. This class derives its raw data from the corresponding raw class Win32_PerfRawData_PerfProc_Thread. The original data source is the PerfProc performance library. This class was added for Windows XP.


var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;

var arrComputers = new Array("\localhost");
for (i = 0; i < arrComputers.length; i++) {
   WScript.Echo("Computer: " + arrComputers[i]);

   var objWMIService = GetObject("winmgmts:\\\\" + arrComputers[i] + "\\root\\CIMV2");
   var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PerfRawData_PerfProc_Thread", "WQL",
                                          wbemFlagReturnImmediately | wbemFlagForwardOnly);

   var enumItems = new Enumerator(colItems);
   for (; !enumItems.atEnd(); enumItems.moveNext()) {
      var objItem = enumItems.item();

      WScript.Echo("Caption: " + objItem.Caption);
      WScript.Echo("ContextSwitchesPersec: " + objItem.ContextSwitchesPersec);
      WScript.Echo("Description: " + objItem.Description);
      WScript.Echo("ElapsedTime: " + objItem.ElapsedTime);
      WScript.Echo("Frequency_Object: " + objItem.Frequency_Object);
      WScript.Echo("Frequency_PerfTime: " + objItem.Frequency_PerfTime);
      WScript.Echo("Frequency_Sys100NS: " + objItem.Frequency_Sys100NS);
      WScript.Echo("IDProcess: " + objItem.IDProcess);
      WScript.Echo("IDThread: " + objItem.IDThread);
      WScript.Echo("Name: " + objItem.Name);
      WScript.Echo("PercentPrivilegedTime: " + objItem.PercentPrivilegedTime);
      WScript.Echo("PercentProcessorTime: " + objItem.PercentProcessorTime);
      WScript.Echo("PercentUserTime: " + objItem.PercentUserTime);
      WScript.Echo("PriorityBase: " + objItem.PriorityBase);
      WScript.Echo("PriorityCurrent: " + objItem.PriorityCurrent);
      WScript.Echo("StartAddress: " + objItem.StartAddress);
      WScript.Echo("ThreadState: " + objItem.ThreadState);
      WScript.Echo("ThreadWaitReason: " + objItem.ThreadWaitReason);
      WScript.Echo("Timestamp_Object: " + objItem.Timestamp_Object);
      WScript.Echo("Timestamp_PerfTime: " + objItem.Timestamp_PerfTime);
      WScript.Echo("Timestamp_Sys100NS: " + objItem.Timestamp_Sys100NS);