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 使用
Priority
视图设置进程格式。
优先级
视图和其他视图在 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
Accept pipeline input:False
Accept wildcard characters:False
通过进程 ID (PID) 指定一个或多个进程。 若要指定多个 ID,请使用逗号分隔 ID。 若要查找进程的 PID,请键入
Get-Process
。
Type:
Int32
[
]
Aliases:PID
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-IncludeUserName
指示使用命令的结果返回
Process
对象的 UserName 值。
Type:
SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-InputObject
指定一个或多个进程对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。
Type:
Process
[
]
Position:Named
Default value:None
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
Accept pipeline input:False
Accept wildcard characters:False
-Name
通过进程名称指定一个或多个进程。 可以键入多个进程名称(以逗号分隔),并可以使用通配符。 参数名称 (
Name
) 是可选的。
Type:
String
[
]
Aliases:ProcessName
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:True
Process
可以将进程对象通过管道传递给此 cmdlet。
Process
默认情况下,此 cmdlet 返回
System.Diagnostics.Process
对象。
FileVersionInfo
如果使用
FileVersionInfo
参数,此 cmdlet 将返回
FileVersionInfo
对象。
ProcessModule
如果使用
Module
参数,而不使用
FileVersionInfo
参数,则此 cmdlet 将返回
ProcessModule
对象。
PowerShell 包含以下别名
Get-Process
:
所有平台:
-
Windows:
在运行 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
,并且可以设计自己的视图。
-
Debug-Process
-
Get-Process
-
Start-Process
-
Stop-Process
-
Wait-Process