【发布时间】:2018-02-06 12:03:25
【问题描述】:
这个powershell的东西
$Processes = get-process | 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 | sort Mem -Descending
}
输出与此相同
$Processes = get-process | 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
}
我还不够精通,不知道它是否真的在工作,但是因为项目是相加的,所以它是从第一个值中排序的,但是因为它仍然按字母顺序排序,我认为它只是没有设置为要排序的正确值。我已经尝试了几种不同的组合
sort, sort-object, sort-object -property "Mem" -Descending, Mem, "Mem", WS, "WS", WorkingSet, @{Expression="Mem"; Descending=$true} 和各种排列,
将生成的 $Obj 扔给另一个排序的 $Obj(抛出一个错误,说它没有添加 $ObjS += $obj |sort 等)在我没有保存的对象上调用排序的其他几种方法或记住。
并得出结论,我的错误可能源于其他地方,但是由于没有抛出错误,我相信我的语法至少是正确的。
我希望输出按进程的内存使用情况排序(按相同名称组合以获得相似进程的总内存,
即所有 chrome 进程都作为一个 --chrome 1650453708--
如果有帮助的话,这也适用于 Windows 7 的任何 powershell
【问题讨论】:
标签: powershell sorting