Stop-Process
cmdlet 停止一个或多个正在运行的进程。 可以按进程名称或进程 ID(PID)指定进程,也可以将进程对象传递给
Stop-Process
。
Stop-Process
仅适用于在本地计算机上运行的进程。
在 Windows Vista 和更高版本的 Windows作系统上,若要停止当前用户不拥有的进程,必须使用“以管理员身份运行”选项启动 PowerShell。 此外,除非指定
Confirm
参数,否则不会提示进行确认。
示例 1:停止进程的所有实例
Stop-Process -Name "notepad"
此命令停止计算机上的记事本进程的所有实例。 记事本的每个实例在其自己的进程中运行。 它使用
Name
参数来指定进程,所有这些进程具有相同的名称。 如果要使用
ID
参数来停止相同的进程,则必须列出记事本的每个实例的进程 ID。
示例 2:停止进程的特定实例
Stop-Process -Id 3952 -Confirm -PassThru
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "notepad (3952)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):y
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
41 2 996 3212 31 3952 notepad
此命令停止记事本进程的特定实例。 它使用进程 ID 3952 标识进程。
Confirm
参数指示 PowerShell 在停止进程之前提示你。 由于提示包含进程名称以及其 ID,因此这是最佳做法。
PassThru
参数将进程对象传递给格式化程序以供显示。 如果没有此参数,则
Stop-Process
命令后不会显示。
示例 3:停止进程并检测它已停止
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}
此系列命令启动并停止
Calc
进程,然后检测已停止的进程。
第一个命令启动计算器的实例。
第二个命令使用
Get-Process
获取一个对象,该对象表示
Calc
进程,然后将其存储在
$p
变量中。
第三个命令停止
Calc
进程。 它使用
InputObject
参数将对象传递给
Stop-Process
。
最后一个命令获取计算机上正在运行但现已停止的所有进程。 它使用
Get-Process
获取计算机上的所有进程。 管道运算符(
|
)将结果传递给
Where-Object
cmdlet,该 cmdlet 选择
HasExited
属性的值$True。
HasExited
只是进程对象的一个属性。 若要查找所有属性,请键入
Get-Process | Get-Member
。
示例 4:停止当前用户不拥有的进程
PS> Get-Process -Name "lsass" | Stop-Process
Stop-Process : Cannot stop process 'lsass (596)' because of the following error: Access is denied
At line:1 char:34
+ Get-Process -Name "lsass" | Stop-Process <<<<
[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process
Warning!
Are you sure you want to perform this action?
Performing operation 'Stop-Process' on Target 'lsass(596)'
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process -Force
这些命令显示使用
Force
停止用户不拥有的进程的效果。
第一个命令使用
Get-Process
来获取 Lsass 进程。 管道运算符将进程发送到
Stop-Process
以停止它。 如示例输出中所示,第一个命令失败并显示“访问被拒绝”消息,因为此过程只能由计算机上的管理员组成员停止。
使用“以管理员身份运行”选项打开 PowerShell 时,将重复该命令,PowerShell 会提示你进行确认。
第二个命令指定
强制
取消提示。 因此,进程在未确认的情况下停止。
-Confirm
在运行 cmdlet 之前,提示你进行确认。
类型:
SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False
-Force
在不提示确认的情况下停止指定的进程。 默认情况下,
Stop-Process
在停止当前用户不拥有的任何进程之前提示确认。
若要查找进程的所有者,请使用
Get-CimInstance
cmdlet 获取表示进程的
Win32_Process
对象,然后使用对象的
GetOwner
方法。
类型:
SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
指定要停止的进程的进程 ID。 若要指定多个 ID,请使用逗号分隔 ID。 若要查找进程的 PID,请键入
Get-Process
。
类型:
Int32
[
]
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False
指定要停止的进程对象。 输入包含对象的变量,或键入获取对象的命令或表达式。
类型:
Process
[
]
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False
-Name
指定要停止的进程的进程名称。 可以键入多个进程名称,用逗号分隔或使用通配符。
类型:
String
[
]
别名:ProcessName
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:True
-PassThru
返回一个表示进程的对象。 默认情况下,此 cmdlet 不生成任何输出。
类型:
SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-WhatIf
显示 cmdlet 运行时会发生什么情况。 cmdlet 未运行。
类型:
SwitchParameter
别名:wi
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False
Process
可以通过管道将进程对象传递给此 cmdlet。
默认情况下,此 cmdlet 不返回任何输出。
Process
使用
PassThru
参数时,此 cmdlet 返回表示已停止进程的
Process
对象。
PowerShell 包含以下
Stop-Process
别名:
所有平台: