如何使用PowerShell编写脚本查找运行进程数最多的用户
PowerShell 查找进程数最多用户实现方案
原有写法的问题
你现在写的ps -IncludeUserName|? UserName -m "$env:USERNAME"只能筛选出当前登录用户的进程,既不能统计所有用户的进程数量,也无法找出进程数最多的用户,无法满足需求。
正确实现脚本
注意:需要以管理员身份运行PowerShell,才能读取所有用户的进程所属信息,否则只能获取当前用户的进程数据
Get-Process -IncludeUserName | Group-Object -Property UserName -NoElement | Sort-Object -Property Count -Descending | Select-Object -First 1
代码功能说明
Get-Process -IncludeUserName:获取系统全量进程,同时拉取进程所属的用户名字段Group-Object -Property UserName -NoElement:按用户名对进程做聚合分组,-NoElement参数仅返回分组的用户名和对应进程数,不保留每个分组下的具体进程对象,减少资源占用Sort-Object -Property Count -Descending:按每个用户的进程数从高到低排序Select-Object -First 1:取排序后的第一条结果,即为进程数最多的用户和对应进程数
拓展用法
如果需要查看所有用户的进程数排名,去掉最后一行的Select-Object -First 1即可:
Get-Process -IncludeUserName | Group-Object -Property UserName -NoElement | Sort-Object -Property Count -Descending
内容的提问来源于stack exchange,提问作者Nick Stark
相关产品推荐
相关产品推荐

