Powershell 中所有进程的 CPU 和内存使用百分比

2024-02-21

有没有一种方法可以查看所有正在运行的进程的 CPU 和内存利用率百分比PowerShell?

我已经尝试过以下方法:

Get-Process | %{"Process={0} CPU_Usage={1} Memory_Usage={2}" -f $_.ProcessName,[math]::Round($_.CPU),[math]::Round($_.PM/1MB)}

除此之外,我还解析了此信息并计算了总内存中的内存使用百分比,但无法获得相同的 CPU 值,因为通过此命令,它显示进程中的 CPU 时间划分,而不是利用率本身。

使用以下命令查看总内存和总 CPU 利用率:

  1. 总物理内存

    Get-WmiObject Win32_OperatingSystem | %{"{0}" -f $_.totalvisiblememorysize}

  2. CPU 总利用率

    Get-WmiObject Win32_Processor | Select-Object -expand LoadPercentage

任何帮助,将不胜感激。我需要它的格式如下:

PROCESS=process_name CPU=percent_cpu_utilization_by_process MEMORY=percent_memory_utilization_by_process

您可以使用WMI object 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。

$RAM= Get-WMIObject Win32_PhysicalMemory | Measure -Property capacity -Sum | %{$_.sum/1Mb} 

然后更改WorkingSetPrivate计算如下

([math]::Round(($_.WorkingSetPrivate/1Mb)/$RAM*100,2))

NoteCPU 统计信息在此WMI对象四舍五入到最接近的现在,我已经计算出当前使用的内存(以兆字节为单位)。有关此类的更多信息,请参阅此link https://msdn.microsoft.com/en-us/library/aa394323(v=vs.85).aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell 中所有进程的 CPU 和内存使用百分比 的相关文章

随机推荐