停止一个或多个正在运行的进程。
语法
Stop-Process [-Id] <Int32[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>] Stop-Process -InputObject <Process[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>] Stop-Process -Name <string[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
说明
Stop-Process cmdlet 停止一个或多个正在运行的进程。可以通过进程名称或进程 ID (PID) 来指定进程,也可以将进程对象传递给 Stop-Process。Stop-Process 仅对在本地计算机上运行的进程有效。
在 Windows Vista 以及 Windows 的更高版本上,要停止不是由当前用户拥有的进程,您必须使用“以管理员身份运行”选项启动 Windows PowerShell。此外,还会提示您进行确认,除非您使用 Force 参数。
参数
-Force
在不提示确认的情况下停止指定的进程。默认情况下,Stop-Process 在停止不是由当前用户拥有的任何进程之前都会提示确认。
要查找进程的所有者,请使用 Get-WmiMethod cmdlet 获取表示该进程的 Win32_Process 对象,然后使用该对象的 GetOwner 方法。
是否为必需? |
false |
位置? |
named |
默认值 |
False |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Id <Int32[]>
指定要停止的进程的进程 ID。若要指定多个 ID,请使用逗号分隔 ID。要查找进程的 PID,请键入“get-process”。参数名(“Id”)为可选项。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-InputObject <Process[]>
停止由指定的进程对象表示的进程。输入一个包含对象的变量,或键入可获取对象的命令或表达式。
是否为必需? |
true |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByValue) |
是否接受通配符? |
false |
-Name <string[]>
指定要停止的进程的进程名称。可以键入多个进程名称(以逗号分隔)或使用通配符。
是否为必需? |
true |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-PassThru
返回一个表示进程的对象。默认情况下,此 cmdlet 将不产生任何输出。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Confirm
在执行命令之前提示您进行确认。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-WhatIf
描述如果执行该命令会发生什么情况(无需实际执行该命令)。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
System.Diagnostics.Process 可以将进程对象通过管道传递给 Stop-Process。 |
输出 |
None 或 System.Diagnostics.Process 如果使用 PassThru 参数,则 Stop-Process 返回一个表示已停止进程的 System.Diagnostics.Process 对象。否则,此 cmdlet 将不产生任何输出。 |
说明
还可以通过其内置别名“kill”和“spps”来引用 Stop-Process。有关详细信息,请参阅 about_Aliases。
您也可以使用 Windows PowerShell 中的 Windows Management Instrumentation (WMI) Win32_Process 对象的属性和方法。有关详细信息,请参阅 Get-WmiObject 和 WMI SDK。
停止进程时,应注意停止进程可能会停止依赖该进程的进程和服务。在极端情况下,停止进程可能会使 Windows 停止。
示例 1
C:\PS>stop-process -name notepad 说明 ----------- 此命令停止计算机上 Notepad 进程的所有实例。(Notepad 的每个实例都运行在其自身进程中。)它使用 Name 参数来指定进程,所有进程都具有相同的名称。如果要使用 ID 参数来停止相同进程,则必须列出每个 Notepad 实例的进程 ID。
示例 2
C:\PS>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 说明 ----------- 此命令停止 Notepad 进程的特定实例。它使用进程 ID 3952 来标识该进程。Confirm 参数指示 Windows PowerShell 在停止该进程之前提示用户。由于提示中包含进程名称及其 ID,因此这是最佳实践。PassThru 参数将该进程对象传递给格式化程序以进行显示。如果不使用此参数,则在执行 Stop-Process 命令后将不显示结果。
示例 3
C:\PS>calc c:\PS>$p = get-process calc c:\PS>stop-process -inputobject $p c:\PS>get-process | where-object {$_.HasExited} 说明 ----------- 这一组命令启动和停止 Calc 进程,然后检测已停止的进程。 第一条命令(“calc”)启动一个计算器实例。第二条命令(“$p = get-process calc”)使用 Get-Process cmdlet 来获取表示 Calc 进程的对象,并将该对象存储在 $p 变量中。第三条命令(“stop-process -inputobject $p”)使用 Stop-Process cmdlet 来停止 Calc 进程。它使用 InputObject 参数将该对象传递给 Stop-Process。 最后一条命令获取计算机上所有曾经运行但现已停止的进程。它使用 Get-Process cmdlet 来获取计算机上的所有进程。管道运算符 (|) 将结果传递给 Where-Object cmdlet,该 cmdlet 从中选择 HasExited 属性值为 TRUE 的结果。HasExited 只是进程对象的一个属性。要查找所有属性,请键入“get-process | get-member”。
示例 4
C:\PS>get-process 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 lsass | stop-process <<<< [ADMIN]: C:\PS> get-process 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]: C:\PS> get-process lsass | stop-process -force [ADMIN]: C:\PS> 说明 ----------- 这些命令演示了使用 Force 参数停止不是由用户拥有的进程的效果。 第一条命令使用 Get-Process cmdlet 获取 Lsass 进程。管道运算符将该进程发送给 Stop-Process cmdlet 以停止该进程。如示例输出中所示,第一条命令失败并显示“访问被拒绝”消息,因为此进程只能由计算机上 Administrator 组的成员停止。 当使用“以管理员身份运行”选项打开 Windows PowerShell 并重新执行该命令时,Windows PowerShell 会提示您进行确认。 第二条命令使用 Force 参数禁止显示提示。因此进程将在不提示确认的情况下停止。
另请参阅