I need to collect the pecentage of CPU time (percentage, not total CPU time ad displayed by command TASKLIST /V) for all the processes on a Windows server.
I see I can get the values I need by using the command:
wmic path Win32_PerfFormattedData_PerfProc_Process where “PercentProcessorTime > 0” get PercentProcessorTime, Name, idprocess
However, I need to get 2 additional information: a timestamp with the time the command was executed, and the user associated with the process.
Is there any sample I can start from?
Regards
marius
Hi Marius,
Did you search on Bing/Google? There are hell lot of answers for your requirement…
https://stackoverflow.com/questions/39943928/listing-processes-by-cpu-usage-percentage-in-powershell
Please go though the thread completely then you will get your answer.
Still if you don’t understand anything please do let us know.
Thank you.
How about this?
$Process = Get-wmiobject win32_process -computername $computername | select *,@{Name='Owner';Expression={($_.GetOwner()).User}}
$Perfdata = Get-wmiobject win32_perfformatteddata_perfproc_process -computername $computername | ?{($_.PercentProcessorTime -gt 0) -And ($_.Name -notmatch '_Total|Idle|system')}
$Results = @()
foreach($item in $Perfdata) {
$Results += [PSCustomObject] @{
Name = $($item.Name)
ID = $($item.IDProcess)
PercentProcessorTime = $($item.PercentProcessorTime )
Owner = ($($Process | ?{$_.ProcessId -eq $Item.IDProcess})).Owner
}
}