Stop-Process
停止一个或多个正在运行的进程。
语法
Stop-Process
[-Id] <Int32[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Process
-Name <String[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Process
[-InputObject] <Process[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
cmdlet Stop-Process
停止一个或多个正在运行的进程。 可以按进程名称或进程 ID (PID) 指定进程,或将进程对象传递给 Stop-Process
。 Stop-Process
仅适用于在本地计算机上运行的进程。
在 Windows Vista 和更高版本的 Windows 操作系统上,若要停止非当前用户拥有的进程,必须使用“以管理员身份运行”选项启动 PowerShell。 此外,除非指定 Confirm 参数,否则系统不会提示你进行 确认 。
示例
示例 1:停止进程的所有实例
PS C:\> Stop-Process -Name "notepad"
此命令停止计算机上 Notepad 进程的所有实例。 记事本的每个实例在其自己的进程中运行。 它使用 Name 参数指定所有进程具有相同名称的进程。 如果要使用 Id 参数停止相同的进程,则必须列出记事本每个实例的进程 ID。
示例 2:停止进程的特定实例
PS C:\> 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 参数指示 PowerShell 在停止进程之前提示你。 由于提示除 ID 外还包括进程名称,因此这是最佳做法。
PassThru 参数将进程对象传递给格式化程序进行显示。 如果没有此参数,命令后 Stop-Process
将不会显示。
示例 3:停止进程并检测到它已停止
calc
$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 选择$True HasExited 属性的值。 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
[ADMIN]: PS>
这些命令显示使用 Force 停止非用户拥有的进程的效果。
第一个命令使用 Get-Process
获取 Lsass 进程。 管道操作员将进程发送到 以 Stop-Process
停止它。 如示例输出所示,第一个命令失败并显示“拒绝访问”消息,因为只有计算机上的管理员组的成员才能停止此过程。
使用“以管理员身份运行”选项打开 PowerShell 并重复该命令时,PowerShell 会提示你进行确认。
第二个命令指定 强制 取消提示。 因此进程将在不提示确认的情况下停止。
参数
-Confirm
提示你在运行 cmdlet 之前进行确认。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
在不提示确认的情况下停止指定的进程。 默认情况下, Stop-Process
在停止非当前用户拥有的任何进程之前,系统会提示进行确认。
若要查找进程的所有者,请使用 Get-CimInstance
cmdlet 获取表示进程的 Win32_Process 对象,然后使用对象的 GetOwner 方法。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
指定要停止的进程的进程 ID。 若要指定多个 ID,请使用逗号分隔 ID。 若要查找进程的 PID,请键入 Get-Process
。
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InputObject
指定要停止的进程对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。
Type: | Process[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
指定要停止的进程的进程名称。 可以键入多个进程名称,用逗号分隔,也可以使用通配符。
Type: | String[] |
Aliases: | ProcessName |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PassThru
返回表示进程的 对象。 默认情况下,此 cmdlet 将不产生任何输出。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
显示运行该 cmdlet 时会发生什么情况。 此 cmdlet 未运行。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
可以将进程对象通过管道传递给此 cmdlet。
输出
None, System.Diagnostics.Process
如果指定 PassThru 参数,此 cmdlet 将返回一个 System.Diagnostics.Process 对象,该对象表示已停止的进程。 否则,此 cmdlet 将不生成任何输出。
备注
还可以按其内置别名引用
Stop-Process
,kill
spps
有关详细信息,请参阅 about_Aliases。还可以在 Windows PowerShell 中使用 Windows Management Instrumentation (WMI) Win32_Process 对象的属性和方法。 有关详细信息,请参阅
Get-CimInstance
和 WMI SDK。停止进程时,请注意,停止进程可以停止依赖于该进程的进程和服务。 在极端情况下,停止进程可能会使 Windows 停止。