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>]

说明

Stop-Process该 cmdlet 停止一个或多个正在运行的进程。 可以通过进程名称或进程 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 选择 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
[ADMIN]: PS>

这些命令显示使用 Force 停止用户不拥有的进程的效果。

第一个命令用于 Get-Process 获取 Lsass 进程。 管道运算符将进程发送到 Stop-Process 停止进程。 如示例输出所示,第一个命令失败并显示“访问被拒绝”消息,因为此过程只能由计算机上的管理员组成员停止。

使用“以管理员身份运行”选项打开 PowerShell 时,将重复该命令,PowerShell 会提示你进行确认。

第二个命令指定 强制 取消提示。 因此进程将在不提示确认的情况下停止。

参数

-Confirm

提示你在运行 cmdlet 之前进行确认。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value: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
Accept pipeline input:False
Accept wildcard characters:False

-Id

指定要停止的进程的进程 ID。 若要指定多个 ID,请使用逗号分隔 ID。 若要查找进程的 PID,请键入 Get-Process

Type:Int32[]
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-InputObject

指定要停止的进程对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。

Type:Process[]
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-Name

指定要停止的进程的进程名称。 可以键入多个进程名称,用逗号分隔或使用通配符。

Type:String[]
Aliases:ProcessName
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:True

-PassThru

返回一个表示进程的对象。 默认情况下,此 cmdlet 将不产生任何输出。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

显示在此 cmdlet 运行的情况下将会发生什么。 此 cmdlet 未运行。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

输入

Process

可以将进程对象通过管道传递给此 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 和 WMI SDK。

  • 停止进程时,意识到停止进程可以停止依赖于进程的进程和服务。 在极端情况下,停止进程可能会使 Windows 停止。