Get-Process
获取在本地计算机上运行的进程。
语法
Get-Process
[[-Name] <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
Get-Process
[[-Name] <String[]>]
-IncludeUserName
[<CommonParameters>]
Get-Process
-Id <Int32[]>
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
Get-Process
-Id <Int32[]>
-IncludeUserName
[<CommonParameters>]
Get-Process
-InputObject <Process[]>
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
Get-Process
-InputObject <Process[]>
-IncludeUserName
[<CommonParameters>]
说明
cmdlet Get-Process
获取本地计算机上的进程。
如果没有参数,此 cmdlet 将获取本地计算机上的所有进程。 还可以按进程名称或进程 ID (PID) 指定特定进程,或者通过管道将进程对象传递给此 cmdlet。
默认情况下,此 cmdlet 返回一个进程对象,该对象包含有关进程的详细信息,并支持用于启动和停止进程的方法。 还可以使用 cmdlet 的参数 Get-Process
获取进程中运行的程序的文件版本信息,并获取进程加载的模块。
示例
示例 1:获取本地计算机上所有活动进程的列表
Get-Process
此命令获取本地计算机上运行的所有活动进程的列表。 有关每列的定义,请参阅 备注 部分。
示例 2:获取有关一个或多个进程的所有可用数据
Get-Process winword, explorer | Format-List *
此命令获取计算机上的有关 Winword 和 Explorer 进程的所有可用的数据。 它使用 Name 参数指定进程,但省略可选的参数名称。 管道运算符 (|
) 将数据 Format-List
传递给 cmdlet,该 cmdlet 显示 winword 和 Explorer 进程对象 (*
) 的所有可用属性。
也可通过其进程 ID 来标识这些进程。 例如:Get-Process -Id 664, 2060
。
示例 3:获取工作集大于指定大小的所有进程
Get-Process | Where-Object {$_.WorkingSet -gt 20000000}
此命令获取所有工作集大于 20 MB 的进程。 它使用 Get-Process
cmdlet 获取所有正在运行的进程。 管道运算符 (|
) 将进程对象传递给 Where-Object
cmdlet,该 cmdlet 仅为 WorkingSet 属性选择值大于 20,000,000 字节的对象。
WorkingSet 是进程对象的众多属性之一。 若要查看所有属性,请键入 Get-Process | Get-Member
。 默认情况下,所有数量属性的值以字节为单位,尽管默认显示以千字节和兆字节为单位列出这些值。
示例 4:根据优先级按组列出计算机上的进程
$A = Get-Process
$A | Get-Process | Format-Table -View priority
这些命令根据其优先级类按组列出计算机上的进程。 第一个命令获取计算机上的所有进程,然后将其存储在 变量中 $A
。
第二个命令通过管道将存储在 变量中的 $A
Process 对象传递给 Get-Process
cmdlet,然后通过管道传递给 Format-Table
cmdlet,该 cmdlet 使用“优先级”视图设置进程格式。
优先级视图和其他视图在 PowerShell 主目录 ($pshome
) 的 PS1XML 格式文件中定义。
示例 5:将属性添加到标准 Get-Process 输出显示
Get-Process pwsh | Format-Table `
@{Label = "NPM(K)"; Expression = {[int]($_.NPM / 1024)}},
@{Label = "PM(K)"; Expression = {[int]($_.PM / 1024)}},
@{Label = "WS(K)"; Expression = {[int]($_.WS / 1024)}},
@{Label = "VM(M)"; Expression = {[int]($_.VM / 1MB)}},
@{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
Id, ProcessName, StartTime -AutoSize
NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName StartTime
------ ----- ----- ----- ------ -- ----------- ---------
143 239540 259384 2366162 22.73 12720 pwsh 12/5/2022 3:21:51 PM
114 61776 104588 2366127 11.45 18336 pwsh 12/5/2022 7:30:53 AM
156 77924 82060 2366185 10.47 18812 pwsh 12/5/2022 7:30:52 AM
85 48216 115192 2366074 1.14 24428 pwsh 12/8/2022 9:14:15 AM
此示例从本地计算机检索进程。 检索到的进程通过管道传递给命令, Format-Table
该命令将 StartTime 属性添加到标准 Get-Process
输出显示。
示例 6:获取进程的版本信息
Get-Process pwsh -FileVersionInfo
ProductVersion FileVersion FileName
-------------- ----------- --------
6.1.2 6.1.2 C:\Program Files\PowerShell\6\pwsh.exe
此命令使用 FileVersionInfo 参数获取文件的版本信息pwsh.exe
,该文件是 PowerShell 进程的main模块。
若要使用你在 Windows Vista 和更高版本的 Windows 上不拥有的进程运行此命令,必须使用“ 以管理员身份运行” 选项打开 PowerShell。
示例 7:获取使用指定进程加载的模块
Get-Process SQL* -Module
此命令使用 Module 参数获取进程已加载的模块。
此命令获取名称以 开头 SQL
的进程模块。
若要在 Windows Vista 和更高版本的 Windows 上使用你不拥有的进程运行此命令,必须使用“ 以管理员身份运行” 选项启动 PowerShell。
示例 8:查找进程的所有者
Get-Process pwsh -IncludeUserName
Handles WS(K) CPU(s) Id UserName ProcessName
------- ----- ------ -- -------- -----------
782 132080 2.08 2188 DOMAIN01\user01 pwsh
此命令演示如何查找进程的所有者。
在 Windows 上, IncludeUserName 参数需要提升的用户权限 (以管理员身份) 运行 。
输出显示所有者为 Domain01\user01
。
示例 9:使用自动变量标识托管当前会话的进程
Get-Process pwsh
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
83 96.21 105.95 4.33 1192 10 pwsh
79 83.81 117.61 2.16 10580 10 pwsh
Get-Process -Id $PID
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
83 96.21 77.53 4.39 1192 10 pwsh
这些命令演示如何使用 $PID
自动变量来标识承载当前 PowerShell 会话的进程。 可以使用此方法将宿主进程与可能要停止或关闭的其他 PowerShell 进程区分开来。
第一个命令获取当前会话中的所有 PowerShell 进程。
第二个命令获取承载当前会话的 PowerShell 进程。
示例 10:获取具有main窗口标题的所有进程并将其显示在表中
Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize
此命令获取具有主窗口标题的所有进程,并在表中显示这些进程及其进程 ID 和进程名称。
mainWindowTitle 属性只是返回的 Process 对象的许多有用属性之一Get-Process
。 若要查看所有属性,请将命令的结果 Get-Process
通过管道传递给 Get-Member
cmdlet Get-Process | Get-Member
。
参数
-FileVersionInfo
指示此 cmdlet 获取进程中运行的程序的文件版本信息。
在 Windows Vista 和更高版本的 Windows 上,必须使用 “以管理员身份运行” 选项打开 PowerShell,才能在自己不拥有的进程上使用此参数。
使用此参数等效于获取每个进程对象的 MainModule.FileVersionInfo 属性。 使用此参数时, Get-Process
返回 FileVersionInfo 对象 System.Diagnostics.FileVersionInfo,而不是进程对象。 因此,不能通过管道将命令的输出传递给需要进程对象的 cmdlet,例如 Stop-Process
。
Type: | SwitchParameter |
Aliases: | FV, FVI |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
通过进程 ID (PID) 指定一个或多个进程。 若要指定多个 ID,请使用逗号分隔 ID。 若要查找进程的 PID,请键入 Get-Process
。
Type: | Int32[] |
Aliases: | PID |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-IncludeUserName
指示 返回包含 命令结果的 Process 对象的 UserName 值。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定一个或多个进程对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。
Type: | Process[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Module
指示此 cmdlet 获取进程已加载的模块。
在 Windows Vista 和更高版本的 Windows 上,必须使用 “以管理员身份运行” 选项打开 PowerShell,才能在自己不拥有的进程上使用此参数。
此参数等效于获取每个进程对象的 Modules 属性。 使用此参数时,此 cmdlet 返回 ProcessModule 对象 System.Diagnostics.ProcessModule,而不是进程对象。 因此,不能通过管道将命令的输出传递给需要进程对象的 cmdlet,例如 Stop-Process
。
在同一命令中同时使用 Module 和 FileVersionInfo 参数时,此 cmdlet 返回一个 FileVersionInfo 对象,其中包含有关所有模块的文件版本的信息。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
通过进程名称指定一个或多个进程。 可以键入多个进程名称(以逗号分隔),并可以使用通配符。 参数名称 (Name
) 是可选的。
Type: | String[] |
Aliases: | ProcessName |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
输入
可以将进程对象通过管道传递给此 cmdlet。
输出
默认情况下,此 cmdlet 返回 System.Diagnostics.Process 对象。
如果使用 FileVersionInfo 参数,此 cmdlet 将返回 FileVersionInfo 对象。
如果使用 Module 参数,而不使用 FileVersionInfo 参数,则此 cmdlet 将返回 ProcessModule 对象。
备注
PowerShell 包含以下别名 Get-Process
:
- 所有平台:
gps
- Windows:
ps
在运行 64 位版本的 Windows 的计算机上,64 位版本的 PowerShell 仅获取 64 位进程模块,32 位版本的 PowerShell 仅获取 32 位进程模块。
若要从远程计算机获取进程信息,请使用 Invoke-Command
cmdlet。 有关详细信息,请参阅 Invoke-Command。
可以在 PowerShell 中使用 Windows Management Instrumentation (WMI) Win32_Process 对象的属性和方法。 有关信息,请参阅 Win32_Process。
进程的默认显示为包括以下列的表。 有关进程对象的所有属性的说明,请参阅 进程属性。
- 句柄:进程已打开的句柄数。
- NPM (K) :进程正在使用的非分页内存量(以 KB 为单位)。
- PM (K) :进程使用的可分页内存量(以 KB 为单位)。
- WS (K) :进程的工作集的大小(以 KB 为单位)。 工作集包括进程最近引用的内存的页面。
- VM (M) :进程使用的虚拟内存量(以 MB 为单位)。 虚拟内存包括磁盘上分页文件中的存储。
- CPU () :进程在所有处理器上使用的处理器时间量(以秒为单位)。
- ID:进程 ID (PID) 。
- ProcessName:进程的名称。 有关与进程相关的概念的解释,请参阅帮助和支持中心中的词汇表以及任务管理器帮助。
还可以使用 可用于 Format-Table
的进程的内置备用视图,例如 StartTime 和 Priority,并且可以设计自己的视图。