Get-Process总内存使用量

Aar*_*ron 14 powershell

$Processes = get-process -computername $tag1 | Group-Object -Property ProcessName
foreach($Process in $Processes)
{
    $Obj = New-Object psobject
    $Obj | Add-Member -MemberType NoteProperty -Name Name -Value $Process.Name
    $Obj | Add-Member -MemberType NoteProperty -Name Mem -Value ($Process.Group|Measure-Object WorkingSet -Sum).Sum
    $Obj
}   
Run Code Online (Sandbox Code Playgroud)

目前,这显示以字节为单位的内存使用情况,如何更改此内容以显示如下内容:

76,592 KB

并输出所有自动化的东西?(与左边对齐)

Mik*_*ray 23

Format-Table可以显示表达式并自动调整列的大小以适应结果:

get-process -computername $tag1 | Group-Object -Property ProcessName | 
    Format-Table Name, @{n='Mem (KB)';e={'{0:N0}' -f (($_.Group|Measure-Object WorkingSet -Sum).Sum / 1KB)};a='right'} -AutoSize
Run Code Online (Sandbox Code Playgroud)

  • @Aaron 对于逗号部分,您只需将数字的输出转换为格式操作 `'{0:N}' -f (($_.Group ... / 1KB})` (2认同)
  • @Aaron 查看我的编辑。IMO 这实际上使结果更难阅读,因为该列将左对齐而不是右对齐。 (2认同)
  • @Aaron实际上,您可以使用我也添加的键值对 a="right" 更改对齐方式。 (2认同)
  • @Aaron你应该能够做的就是设置像这样的“{0:N0}”的小数位。第二个 0 表示小数点后 0 位。`{0:N2}` 表示小数点后 2 位。由于某种原因,我在测试时忽略了这一点。可能只需要在“-f”之后的整个部分使用“[math]::round(...)” (2认同)

ojk*_*ojk 6

Get-Process | Select-Object Name,@{Name='WorkingSet';Expression={($_.WorkingSet/1KB)}}
Run Code Online (Sandbox Code Playgroud)


Stu*_*ith 6

要获取在64位Windows操作系统上使用的每个进程的内存量,请运行以下命令...

 Get-Process | Sort-Object WorkingSet64 | Select-Object Name,@{Name='WorkingSet';Expression={($_.WorkingSet64/1KB)}} | Export-Csv -Path "processes64.csv" -Delimiter ","  
Run Code Online (Sandbox Code Playgroud)


Mic*_*lli 5

只是除以1KB

也可以使用1MB,1GB,1TB。

这样,Powershell很有帮助。

此链接应该有助于Powershell字节转换技巧