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

Powershell中所有进程的CPU和内存使用百分比,powershell,powershell-2.0,Powershell,Powershell 2.0,是否有办法查看PowerShell中所有正在运行的进程的CPU和内存利用率百分比 我尝试了以下方法: Get-Process | %{"Process={0} CPU_Usage={1} Memory_Usage={2}" -f $_.ProcessName,[math]::Round($_.CPU),[math]::Round($_.PM/1MB)} 同时,我解析了这些信息,并从总内存中计算了内存使用率百分比,但无法获得CPU的相同百分比,因为通过这个命令,它显示了进程中的CPU时间划分,而

是否有办法查看PowerShell中所有正在运行的进程的CPU和内存利用率百分比

我尝试了以下方法:

Get-Process | %{"Process={0} CPU_Usage={1} Memory_Usage={2}" -f $_.ProcessName,[math]::Round($_.CPU),[math]::Round($_.PM/1MB)}
同时,我解析了这些信息,并从总内存中计算了内存使用率百分比,但无法获得CPU的相同百分比,因为通过这个命令,它显示了进程中的CPU时间划分,而不是利用率本身

对总内存和总cpu利用率使用以下命令:

  • 总物理内存

    获取WmiObject Win32_OperatingSystem |%{{0}”-f$\u.totalvisiblememorysize}

  • 总CPU利用率

    获取WmiObject Win32|u处理器|选择对象-展开加载百分比

  • 任何帮助都将不胜感激。我需要以下格式的文件:

    PROCESS=process_name CPU=percent_cpu_utilization_by_process MEMORY=percent_memory_utilization_by_process
    

    您是否尝试获取Counter cmdlet

    Get-Counter cmdlet允许您获取本地/远程计算机的性能计数器数据

    有关更多详细信息,请查看博客:


    您可以使用
    WMI
    对象
    Win32\u performatteddata\u PerfProc\u进程
    收集所有这些数据

    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))
    

    注意
    WMI
    对象中的CPU状态被四舍五入到最近的当前值,我已计算出当前使用的内存(以MB为单位)。有关此类的更多信息,请参见此

    请看给出的答案,如果有任何问题或帮助的答案,请投票或接受,谢谢。谢谢,帮了我很多忙!什么是
    -inotmatch
    ?@markschultheis不区分大小写,不匹配。