Command to check CPU utilization in Windows 11/10

The command to check CPU utilization in Windows 11 and Windows 10 is typeperf "\Processor(_Total)\% Processor Time" in Command Prompt, or Get-Counter -Counter "\Processor(_Total)\% Processor Time" in PowerShell.

Both read the same performance counter Task Manager uses, and this guide covers per-process checks, logging over time, remote PCs, scheduled monitoring and what replaced WMIC.

Command To Check CPU Utilization In Windows 11/10
The _Total instance of % Processor Time is the same counter that typeperf and Get-Counter read from the command line. (Image: Microsoft)

Fastest command to check CPU usage in Command Prompt

Open Command Prompt and run the command below. It prints the total CPU load once a second until you stop it.

typeperf "\Processor(_Total)\% Processor Time" -sc 5

Reads the total processor time counter across all cores. -sc 5 stops after five one-second samples; leave it out to keep sampling until you press Ctrl + C.

You should see: Five timestamped lines with a percentage in quotes, for example a value between 0 and 100 for each second, followed by The command completed successfully.

On a PC set to another display language, counter names are localized, so the English path may not be found.

Which CPU usage command should you use?

What you want to know Command Shell
Total CPU load right now typeperf "\Processor(_Total)\% Processor Time" Command Prompt
Total CPU load as a PowerShell object Get-Counter -Counter "\Processor(_Total)\% Processor Time" PowerShell
Which process is using the CPU now Get-Counter "\Process(*)\% Processor Time" sorted by value PowerShell
Which process has used the most CPU time since it started tasklist /v or Get-Process Either
Load per processor socket, one quick number Get-CimInstance -ClassName Win32_Processor PowerShell
CPU model, cores and speed, not load systeminfo Command Prompt
A graph or a full report perfmon /sys or perfmon /report Either
Load over hours or days logman create counter or a Get-Counter script Either

Why you should monitor CPU utilization

CPU utilization is the share of time the processor spends running work instead of sitting idle. A reading taken from the command line is easy to repeat, log and compare.

Reason What the numbers tell you
Slow or laggy PC Sustained load near 100% points to a busy process rather than a disk or memory problem
Fans or heat High load at idle means something is running in the background
A suspect process Per-process counters show exactly which program is responsible
Upgrade decisions A log over a working week shows whether the CPU is regularly maxed out
Servers and remote PCs Commands can read the counter from another computer without opening a desktop session

1. Using Tasklist command in Command Prompt

Tasklist does not show a live percentage. It shows how much CPU time each process has consumed, which is useful for spotting a program that has been busy for a long time.

tasklist /v /fi "CPUTIME gt 00:10:00"

/v adds verbose details for each process, and the CPUtime filter keeps only processes that have used more than ten minutes of processor time. The time format is HH:MM:SS.

You should see: A table of image names with their PID, memory use and accumulated CPU time. Add /fo csv to get comma-separated output you can open in Excel.

2. Using WMIC command (Windows Management Instrumentation Command-Line)

WMIC has been deprecated since Windows 10, version 21H1. Starting in August 2026, Windows 11 versions 24H2 and 25H2 no longer include it, and it cannot be added back as a Feature on Demand.

WMI itself is still supported, so the old wmic cpu get loadpercentage query has a direct PowerShell replacement.

Get-CimInstance -ClassName Win32_Processor | Select-Object Name, LoadPercentage

Reads the LoadPercentage property of the Win32_Processor class, the load of each processor averaged over the last second. A desktop usually returns one row per CPU socket.

You should see: The processor name and a whole-number percentage, the same value WMIC used to print.

On older Windows 10 builds where WMIC still exists, wmic cpu get loadpercentage returns the same property, but scripts should move to PowerShell.

3. Using PowerShell to check CPU utilization

Get-Counter reads performance counters directly. Without extra parameters it takes one sample.

Goal PowerShell command
One reading of total CPU Get-Counter -Counter "\Processor(_Total)\% Processor Time"
Three readings, two seconds apart Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3
Live reading every second until Ctrl + C Get-Counter -Counter "\Processor(_Total)\% Processor Time" -Continuous
Each logical processor separately Get-Counter -Counter "\Processor(*)\% Processor Time"
Processes with the most total CPU time Get-Process | Sort-Object CPU -Descending | Select-Object -First 10

In Get-Process output, the CPU(s) column is processor time used on all processors, in seconds, not a percentage.

4. Using Typeperf command

Typeperf works in any Command Prompt window and writes to the screen or to a file. The default sample interval is one second.

typeperf "\Processor(_Total)\% Processor Time" -si 5 -sc 60 -o C:\PerfLogs\cpu.csv

-si 5 samples every five seconds, -sc 60 stops after 60 samples (five minutes), and -o writes the results to a CSV file instead of the window. Use -f TSV for tab-separated output.

You should see: The command ends with The command completed successfully. and cpu.csv opens in Excel with a timestamp column and a CPU column.

Run typeperf -qx Processor to list every processor counter and instance available on the PC.

5. Using Systeminfo command

Systeminfo reports configuration and hardware details, including the installed processor. It does not report a live CPU percentage, so use it to identify the chip before you read the load.

systeminfo /fo list

Prints operating system, hardware and security details as a list. The Processor(s) entry names the installed CPU.

You should see: A long list that includes the OS version, the processor entry and total physical memory.

6. Using Performance Monitor (PerfMon) command

Command What opens
perfmon /sys Performance Monitor, which graphs % Processor Time by default
perfmon /res Resource View (Resource Monitor), with per-process CPU on the CPU tab
perfmon /report Runs the System Diagnostics data collector and shows a report of the results
perfmon /rel Reliability Monitor, for crashes and errors that coincide with CPU spikes

Run perfmon /report from an elevated prompt; the system diagnostics collector needs administrator rights.

Check CPU utilization in Performance Monitor with per-process % Processor Time counters
Run perfmon /sys to open Performance Monitor; the counter list under the graph shows Last, Average and Maximum values. (Image: Microsoft)

7. Using Windows built-in tools along with commands

A command gives you a number; a graphical tool shows the context around it. Use them together when the number alone does not explain the slowdown.

  1. Press Ctrl + Shift + Esc to open Task Manager, or right-click Start and select Task Manager.
  2. Select Performance to see the live CPU graph and the current utilization.
  3. Select Processes and click the CPU column header to sort programs by load.
  4. Run perfmon /res and open the CPU tab when you need per-service detail.
  5. Confirm the culprit with Get-Counter "\Process(*)\% Processor Time" so you have a value you can log.
Check CPU usage in Windows 11 Task Manager on the Performance tab
Press Ctrl + Shift + Esc and select Performance; the Utilization figure is the live CPU load across all cores. (Image: Microsoft)

8. Using PowerShell script to log CPU usage over time

This script records the total CPU load every five seconds for one hour and saves it as a CSV file in your user folder.

Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 5 -MaxSamples 720 | ForEach-Object { $_.CounterSamples | Select-Object Timestamp, @{n='CPU';e={[math]::Round($_.CookedValue,1)}} } | Export-Csv -Path "$env:USERPROFILE\cpu-log.csv" -NoTypeInformation

Get-Counter takes 720 samples five seconds apart, the loop keeps the timestamp and the rounded CookedValue (the percentage), and Export-Csv writes them to cpu-log.csv.

You should see: After an hour the prompt returns and cpu-log.csv in your user folder holds 720 rows of time and CPU percentage.

Change -SampleInterval and -MaxSamples to cover a longer window, such as 60 and 1440 for a full day.

9. Checking CPU utilization remotely

Get-Counter does not rely on PowerShell remoting, so it can read another PC on the network even when remote commands are not set up. Run it from an account that has permission to read performance data on that computer.

Tool Remote command
PowerShell Get-Counter Get-Counter -Counter "\Processor(_Total)\% Processor Time" -ComputerName PC02
PowerShell CIM Get-CimInstance -ClassName Win32_Processor -ComputerName PC02 | Select-Object LoadPercentage
Typeperf typeperf "\Processor(_Total)\% Processor Time" -s PC02 -sc 5
Tasklist tasklist /s PC02 /v
Systeminfo systeminfo /s PC02

Replace PC02 with the computer name or IP address, without backslashes for tasklist and systeminfo.

Check CPU utilization with PowerShell and format output

Raw counter output is long. These one-liners return a clean number or a short table.

Output you want Command
A single rounded percentage [math]::Round((Get-Counter "\Processor(_Total)\% Processor Time").CounterSamples.CookedValue, 1)
Top 10 processes by current CPU (Get-Counter "\Process(*)\% Processor Time").CounterSamples | Sort-Object CookedValue -Descending | Select-Object -First 10 InstanceName, CookedValue
Per-process value as a share of the whole CPU Divide each CookedValue by $env:NUMBER_OF_PROCESSORS
Only cores under 20% load (Get-Counter "\Processor(*)\% Processor Time").CounterSamples | Where-Object { $_.CookedValue -lt 20 }

Process counters add up across cores, so a busy process on an eight-thread CPU can read well above 100. The _total and idle rows in the process list are sums, not programs.

Automating CPU monitoring with Task Scheduler

Save a one-sample script and let Task Scheduler run it every 15 minutes. Each run appends one row to a CSV file.

  1. Create the folder C:\Scripts.
  2. Save this line as C:\Scripts\cpu-log.ps1: Get-Counter "\Processor(_Total)\% Processor Time" | ForEach-Object { $_.CounterSamples | Select-Object Timestamp, CookedValue } | Export-Csv C:\Scripts\cpu-log.csv -Append -NoTypeInformation
  3. Open Command Prompt as administrator.
  4. Run schtasks /create /sc minute /mo 15 /tn "CPU snapshot" /tr "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Scripts\cpu-log.ps1" /ru system.
  5. Wait 15 minutes, then open C:\Scripts\cpu-log.csv to see the first row.
  6. Remove the task later with schtasks /delete /tn "CPU snapshot".

Advanced monitoring using performance logs

Logman creates a data collector that keeps running in the background, even after you close the window. Run these commands in an elevated Command Prompt.

  1. Create the collector: logman create counter cpu_log -c "\Processor(_Total)\% Processor Time" -si 00:00:15 -f csv -o C:\PerfLogs\cpu_log.
  2. Start it: logman start cpu_log.
  3. Use the PC normally for as long as you want to measure.
  4. Stop it: logman stop cpu_log.
  5. Open the CSV file in C:\PerfLogs in Excel, or open a binary log in Performance Monitor with perfmon /sys.

Leave out -f csv to record a binary .blg log, which Performance Monitor graphs directly.

How to confirm a CPU usage command reads correctly

  1. Open Task Manager with Ctrl + Shift + Esc and select Performance.
  2. Run typeperf "\Processor(_Total)\% Processor Time" -sc 10 in Command Prompt beside it.
  3. Compare the numbers over the same ten seconds; they should track each other closely.
  4. Open a demanding app and confirm both readings rise together.
Confirm CPU utilization readings against Task Manager logical processor graphs
Compare the Utilization value here with typeperf output over the same ten seconds; the two should track closely. (Image: Microsoft)

Common reasons for high CPU usage

Cause How to confirm it from the command line
Too many apps and browser tabs open Top entries in the \Process(*)\% Processor Time list are browser or app processes
Startup apps running in the background High load straight after sign-in that settles once startup apps finish
Malware An unfamiliar process name that keeps a high counter value; run a scan to check it
Windows Update or a security scan Update or Defender processes near the top for a limited period; a stuck Antimalware Service Executable stays high for longer
Outdated drivers Persistent load from system processes after a hardware or Windows change
Power mode set to save energy CPU near 100% under modest work because clock speed is limited

Tips to reduce high CPU utilization

These steps come from Windows' own performance guidance and reduce CPU usage in Windows 11 without extra software.

  1. Close apps and browser tabs you are not using, then restart from Start > Power > Restart.
  2. Install updates from Settings > Windows Update > Check for updates, and check Advanced options > Optional updates for driver updates.
  3. Run Quick scan in Settings > Privacy & security > Windows Security > Virus & threat protection.
  4. In Task Manager, open Startup apps and disable programs you do not need at boot.
  5. Set Let this app run in the background to Never for apps that do not need it.
  6. Rerun the Get-Counter process command to confirm the load has dropped.

If memory is also tight, check how much RAM you have before blaming the processor.

Fix CPU usage commands that return errors

'wmic' is not recognized as an internal or external command

WMIC is removed from current Windows 11 builds and cannot be added back.

  1. Open PowerShell.
  2. Run Get-CimInstance -ClassName Win32_Processor | Select-Object LoadPercentage instead.

Get-Counter or typeperf says the counter path is not valid

Counter names are localized on PCs that use a language other than English.

  1. Run Get-Counter -ListSet Processor* to see the counter names in your language.
  2. Copy the localized path from the Paths list into your command.

Some counter sets are missing or access is denied

Many counter sets are protected by access control lists.

  1. Right-click Windows PowerShell or Terminal and select Run as administrator.
  2. Run the Get-Counter command again.

A process shows more than 100% CPU

Process counters add up across every logical processor.

  1. Divide the value by $env:NUMBER_OF_PROCESSORS to get a share of the whole CPU.
  2. Ignore the _total and idle rows, which are totals rather than programs.

Third-party alternatives (optional)

Built-in commands cover most needs. If you want a richer process view, Microsoft's own Sysinternals suite is the safest step up.

Tool Publisher What it adds
Process Explorer Microsoft Sysinternals A tree of active processes with owning accounts, plus the handles and DLLs each one has loaded
Performance Monitor Built into Windows Graphs and data collector sets for any counter
Resource Monitor Built into Windows Per-process and per-service CPU, disk and network detail

CPU utilization command FAQs

What is the command to check CPU usage in CMD?

Run typeperf "\Processor(_Total)\% Processor Time" in Command Prompt. It prints the total CPU percentage every second until you press Ctrl + C, or for a set number of samples when you add -sc followed by a number.

How do I check CPU usage in PowerShell?

Run Get-Counter -Counter "\Processor(_Total)\% Processor Time". Add -Continuous for a live reading every second, or -SampleInterval and -MaxSamples to take a fixed number of readings at the interval you choose.

Does wmic cpu get loadpercentage still work?

Not on current Windows 11 builds. WMIC was deprecated in Windows 10 21H1 and removed from Windows 11 24H2 and 25H2. Use Get-CimInstance -ClassName Win32_Processor in PowerShell to read the same LoadPercentage value.

How do I find which process is using the most CPU from the command line?

In PowerShell, run Get-Counter "\Process(*)\% Processor Time" and sort the CounterSamples by CookedValue in descending order. The top rows after _total and idle are the busiest programs at that moment.

Does tasklist show CPU usage?

Tasklist shows accumulated CPU time, not a live percentage. Use tasklist /v to see it, and filter with /fi "CPUTIME gt 00:10:00" to list only processes that have used more than ten minutes of processor time.

Can systeminfo show CPU utilization?

No. Systeminfo lists configuration and hardware details, including the installed processor, but it does not measure load. Pair it with typeperf or Get-Counter when you need the current utilization.

How do I check CPU usage on a remote computer?

Run Get-Counter -Counter "\Processor(_Total)\% Processor Time" -ComputerName followed by the PC name. Get-Counter does not need PowerShell remoting. Typeperf with -s and tasklist with /s also read remote computers.

How do I log CPU usage to a file?

Use typeperf with -o and a file name, such as typeperf "\Processor(_Total)\% Processor Time" -si 5 -sc 60 -o cpu.csv. For long periods, create a logman counter collector that runs in the background.

Best command for checking CPU utilization

Use typeperf for a quick reading in Command Prompt and Get-Counter for anything you want to filter, log or run against another PC. Both read the same processor counter Task Manager displays, both work on Windows 11 and 10 without extra software, and neither depends on the removed WMIC tool.

Philip Celasco

Philip is a Texas-based technology writer and IT administrator at Techdows.com with more than 10 years of experience creating practical content for everyday users and professionals. He specializes in web browsers, particularly Chromium-based platforms such as Google Chrome, Microsoft Edge, Brave, and Opera. Through his work as an IT administrator, Philip has hands-on experience managing devices, configuring browser policies, troubleshooting software and network issues, and helping people resolve problems that affect productivity and security. His articles are based on practical testing and real-world technical experience. He covers browser settings, extensions, performance problems, privacy controls, security features, and Windows troubleshooting. Outside work, Philip enjoys the quieter side of life in Texas and stepping away from the screen when he can. He has two kids, two cats and loves to play golf with his mother during the weekends.

Leave a Reply

Your email address will not be published. Required fields are marked *