Say*_*osh 6 powershell powershell-2.0
有没有办法查看所有正在运行的进程的 CPU 和内存利用率百分比PowerShell?
我已经尝试过以下方法:
Get-Process | %{"Process={0} CPU_Usage={1} Memory_Usage={2}" -f $_.ProcessName,[math]::Round($_.CPU),[math]::Round($_.PM/1MB)}
Run Code Online (Sandbox Code Playgroud)
除此之外,我还解析了此信息并计算了总内存中的内存使用百分比,但无法获得相同的 CPU 值,因为通过此命令,它显示进程中的 CPU 时间划分,而不是利用率本身。
使用以下命令查看总内存和总 CPU 利用率:
总物理内存
Get-WmiObject Win32_OperatingSystem | %{"{0}" -f $_.totalvisiblememorysize}
CPU 总利用率
Get-WmiObject Win32_Processor | Select-Object -expand LoadPercentage
任何帮助,将不胜感激。我需要它的格式如下:
PROCESS=process_name CPU=percent_cpu_utilization_by_process MEMORY=percent_memory_utilization_by_process
Run Code Online (Sandbox Code Playgroud)
您可以使用该WMI对象Win32_PerfFormattedData_PerfProc_Process来收集所有这些数据。
Get-WmiObject Win32_PerfFormattedData_PerfProc_Process `
| Where-Object { $_.name -inotmatch '_total|idle' } `
| ForEach-Object {
"Process={0,-25} CPU_Usage={1,-12} Memory_Usage_(MB)={2,-16}" -f `
$_.Name,$_.PercentProcessorTime,([math]::Round($_.WorkingSetPrivate/1Mb,2))
}
Run Code Online (Sandbox Code Playgroud)
如果您需要内存占总内存的百分比,您可以在开始时添加以下内容以获得系统中的总 RAM。
$RAM= Get-WMIObject Win32_PhysicalMemory | Measure -Property capacity -Sum | %{$_.sum/1Mb}
Run Code Online (Sandbox Code Playgroud)
然后将WorkingSetPrivate计算更改为以下
([math]::Round(($_.WorkingSetPrivate/1Mb)/$RAM*100,2))
Run Code Online (Sandbox Code Playgroud)
请注意,该对象中的 CPU 统计数据WMI四舍五入到最接近的当前值,并且我已经计算了当前使用的内存(以兆字节为单位)。有关此类的更多信息,请参阅此链接。
| 归档时间: |
|
| 查看次数: |
35320 次 |
| 最近记录: |