I am working to get the CPU Usage for WinPE 2.1 . First i tried it through wmi using the below method set oSvc = GetObject("winmgmts:root\cimv2") wqlQuery = "select LoadPercentage from Win32_Processor where DeviceID = 'CPU0'" for each oData in oSvc.ExecQuery(wqlQuery) for each oProperty in oData.Properties_ if oProperty.Name = "LoadPercentage" then proc0Load = oProperty.Value end if next next wscript.echo Time() & "," & proc0Load & "," It is working for all OS except WinPE and Vista as i have seen in wbemtest the Load Percentage value is coming there as NULL. After that i tried to get the CPU usage using Performance Counters. The CPU usage counter is of type PERF_100NSEC_TIMER_INV which has the following calculation: 100*(1-(X1-X0)/(Y1-Y0)) X - CounterData Y - 100NsTime Time base - 100Ns where the denominator (Y) represents the total elapsed time of the sample interval and the numerator (X) represents the time during the interval when the monitored components were inactive. CCpuUsage class has a method called GetCpuUsage which runs through the performance objects and counters and retrieves the CPU usage. Since the CPU usage can be determined by two samplings, the first call to GetCpuUsage() returns 0, and all calls thereafter returns the CPU usage. But here also i am not getting the correct CPU Usage. It is showing as 0 and then jumping to 100 directly for WinPE2.1 May be the Performance counters are not supported in Vista and WinPE. Please guide me if i am correct in my approach till now. If not, please provide me the way to get the CPU Usage in WINPE 2.1 version. Waiting for the quick reply. Thanks in advance.