ZetCode

PowerShell Get-Process

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍PowerShell中的Get-Process cmdlet。此cmdlet用于检索有关系统上正在运行的进程的信息。

进程基础知识

进程是正在运行的程序的一个实例。每个进程都有唯一的标识符(PID)、名称和资源使用统计信息。可以使用各种cmdlet通过PowerShell管理进程。Get-Process cmdlet是进程监视和管理的基础。

Get-Process基本用法

使用Get-Process的最简单方法是不带任何参数。这将列出系统上所有正在运行的进程。输出包括进程名称、ID和资源使用情况。每个进程都表示为一个Process对象。

process1.ps1
Get-Process

此命令检索所有正在运行的进程。默认情况下,输出格式化为表。您可以看到进程名称、ID和CPU使用情况。

按名称获取特定进程

您可以通过名称检索特定进程的信息。使用-Name参数,后跟进程名称。支持通配符以进行部分匹配。当您需要检查特定应用程序是否正在运行时,这很有用。

process2.ps1
Get-Process -Name "chrome"

此命令返回名称中包含“chrome”的所有进程。对于Web浏览器之类的应用程序,通常会返回多个进程。

按ID获取进程

还可以通过其唯一的进程ID(PID)检索进程。当您需要精确识别时,这很有用。使用-Id参数,后跟PID。每个正在运行的进程都有一个唯一的数字标识符。

process3.ps1
Get-Process -Id 6784

此命令返回ID为6784的进程信息。由于PID是唯一的,因此只会返回一个进程。

格式化进程输出

可以使用Format-List更改默认的表格式以获取详细信息。这将显示进程对象的所有可用属性。您还可以使用Select-Object选择要显示的特定属性。

process4.ps1
Get-Process -Name "notepad" | Format-List *

此命令以列表格式显示记事本进程的所有属性。输出包括内存使用情况、线程和其他详细信息。

按CPU使用率过滤进程

您可以根据进程的资源消耗来过滤进程。此示例显示使用大量CPU资源的进程。Where-Object cmdlet用于过滤。这有助于识别性能密集型进程。

process5.ps1
Get-Process | Where-Object { $_.CPU -gt 10 }

此命令列出CPU使用时间超过10秒的进程。$_变量代表管道中的当前进程。根据需要调整阈值以进行分析。

按内存使用量排序进程

可以使用Sort-Object按内存消耗对进程进行排序。这有助于识别内存密集型应用程序。-Descending参数首先显示消耗最多的进程。默认情况下,内存使用量以千字节为单位显示。

process6.ps1
Get-Process | Sort-Object -Property WS -Descending | Select-Object -First 5

此命令显示按工作集内存排序的前5个进程。WS属性表示工作集大小。您可以使用PM代替私有内存。

获取进程模块

Modules属性包含进程加载的DLL和其他模块。这对于调试或安全分析很有用。使用Select-Object展开Modules属性。每个模块都显示其路径和版本信息。

process7.ps1
Get-Process -Name "explorer" | Select-Object -ExpandProperty Modules

此命令列出Windows资源管理器进程加载的所有模块。输出包括模块名称、路径和内存地址。这对于高级故障排除很有用。

获取远程进程

Get-Process可以使用-ComputerName参数从远程计算机检索进程。这需要启用PowerShell Remoting。语法与本地进程检索类似。您必须在远程计算机上具有适当的权限。

process8.ps1
Get-Process -ComputerName "Server01"

此命令列出在远程计算机Server01上运行的所有进程。输出格式与本地进程检索相同。网络延迟可能会影响性能。

来源

PowerShell 文档

在本文中,我们介绍了PowerShell中的Get-Process cmdlet。

作者

我叫Jan Bodnar,是一名热情的程序员,拥有丰富的编程经验。自2007年以来,我一直在撰写编程文章。迄今为止,我已撰写了1400多篇文章和8本电子书。我在编程教学方面拥有超过十年的经验。

列出 所有 PowerShell 教程