CPU 和 Powershell 中所有进程的内存使用百分比
CPU and memory usage in percentage for all processes in Powershell
有没有一种方法可以查看 PowerShell
中所有 运行 个进程的 CPU 和内存利用率百分比?
我试过以下方法:
Get-Process | %{"Process={0} CPU_Usage={1} Memory_Usage={2}" -f $_.ProcessName,[math]::Round($_.CPU),[math]::Round($_.PM/1MB)}
连同它我已经解析了这些信息并从总内存中计算出内存使用百分比,但是对于 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
您尝试过 Get-Counter cmdlet 吗?
Get-Counter cmdlet 允许您获取 local/remote 机器的性能计数器数据。
查看博客了解更多详情:
您可以使用 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))
}
如果您需要内存占总内存的百分比,您可以在开始时添加以下内容以获得系统中的总内存。
$RAM= Get-WMIObject Win32_PhysicalMemory | Measure -Property capacity -Sum | %{$_.sum/1Mb}
然后把WorkingSetPrivate
的计算改成下面的
([math]::Round(($_.WorkingSetPrivate/1Mb)/$RAM*100,2))
注意 WMI
对象中的 CPU 统计数据四舍五入到最接近的当前值,我计算了当前使用的内存(以兆字节为单位)。有关此 class 的更多信息,请参阅此 link。
有没有一种方法可以查看 PowerShell
中所有 运行 个进程的 CPU 和内存利用率百分比?
我试过以下方法:
Get-Process | %{"Process={0} CPU_Usage={1} Memory_Usage={2}" -f $_.ProcessName,[math]::Round($_.CPU),[math]::Round($_.PM/1MB)}
连同它我已经解析了这些信息并从总内存中计算出内存使用百分比,但是对于 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
您尝试过 Get-Counter cmdlet 吗?
Get-Counter cmdlet 允许您获取 local/remote 机器的性能计数器数据。
查看博客了解更多详情:
您可以使用 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))
}
如果您需要内存占总内存的百分比,您可以在开始时添加以下内容以获得系统中的总内存。
$RAM= Get-WMIObject Win32_PhysicalMemory | Measure -Property capacity -Sum | %{$_.sum/1Mb}
然后把WorkingSetPrivate
的计算改成下面的
([math]::Round(($_.WorkingSetPrivate/1Mb)/$RAM*100,2))
注意 WMI
对象中的 CPU 统计数据四舍五入到最接近的当前值,我计算了当前使用的内存(以兆字节为单位)。有关此 class 的更多信息,请参阅此 link。