首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >powershell对象降序排序

powershell对象降序排序
EN

Stack Overflow用户
提问于 2018-02-06 07:28:47
回答 3查看 5K关注 0票数 0

这个powershell的东西

代码语言:javascript
运行
复制
$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
}

输出与以下内容相同

代码语言:javascript
运行
复制
$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等),还有一些我没有保存或记住的调用对象排序的其他方法。

并得出结论,我的错误可能源于其他地方,但是,由于没有抛出错误,我相信我的语法至少是正确的。

我希望输出按进程的内存使用情况排序(按相同的名称组合,以获得相似进程的总内存,

即所有的铬处理为一个-铬1650453708--

此外,这是在任何powershell上的windows7,如果这有任何帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-06 10:45:21

构建数据集,然后进行排序。

代码语言:javascript
运行
复制
Function Get-ProcessMemorySummary1
{
    $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
    }
}
Get-ProcessMemorySummary1 | Sort-Object Mem



Function Get-ProcessMemorySummary2
{
    $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
    }
}

Get-ProcessMemorySummary2 | Sort-Object Mem

Name                         Mem
----                         ---
Idle                        8192
smss                     1277952
NisSrv                   1536000
ptim                     1765376
ptsrv                    1945600
ONENOTEM                 3014656
rundll32                 3084288
Secure System            3899392
ibtsiva                  4325376
SynTPHelper              4648960
fdlauncher               5128192
ssh-agent                5353472
ibmpmsvc                 5521408
fdhost                   6725632
...

Get-ProcessMemorySummary2 | Sort-Object Mem -Descending

Name                         Mem
----                         ---
iexplore              1890992128
svchost               1115009024
powershell_ise         834617344
RDCMan                 734556160
sqlservr               698155008
Microsoft.Photos       396951552
dwm                    346951680
MsMpEng                201469952
explorer               184778752
...
票数 0
EN

Stack Overflow用户

发布于 2018-02-06 08:12:20

这里有一个提示:您在这里排序的是什么?

代码语言:javascript
运行
复制
foreach($Process in $Processes)
{
    #...
    $Obj | sort Mem -Descending
}
票数 2
EN

Stack Overflow用户

发布于 2018-02-06 10:17:59

前段时间有人告诉我,使用Add-Member是一种资源浪费。使用PSCustomObject可能会使您的代码更紧凑,冗余更少,并且便于阅读排序。

代码语言:javascript
运行
复制
Get-Process | Group-Object -Property ProcessName | ForEach-Object {
[array]$objProcesses += [PSCustomObject][ordered] @{
    Name = $_.Name
    Mem = $(($_.Group | Measure-Object  WorkingSet -Sum).Sum)
}
}
Return $objProcesses
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48633180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档