网站搜索

停止进程 - 使用 PowerShell 终止进程


Stop-Process PowerShell cmdlet 会停止正在运行的进程。如果使用进程名称、进程 ID (PID) 或进程对象来停止进程,您可以终止该进程。

更常见的是,我们有一个应用程序停止响应,即使等待一段时间后,它仍然显示程序未响应消息。

如果使用任务管理器运行来选择进程并杀死它,有多种方法可以杀死进程。

另一种选择是使用 PowerShell Stop-Process cmdlet 按 PID 或进程名称终止进程,或者终止正在运行的进程。

在本文中,我将解释如何在本地系统上使用进程名称、进程 ID 在 PowerShell 中运行时停止该进程。

停止进程 PowerShell cmdlet

语法-

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

参数:

Id——进程Id(PID),多个Id用逗号分隔

Name - 进程名称,使用逗号分隔多个进程名称或使用通配符获取进程名称

InputObject ——变量或命令返回的过程对象。

PassThru - 将 Stop-Process 创建的对象通过管道传递给另一个命令

强制 - 强制停止进程而不及时确认

确认 - 提示确认执行命令。

注意:PowerShell Stop-Process cmdlet 仅停止本地计算机上运行的进程。

让我们通过示例来了解PowerShell 中的停止进程。

如果使用 PowerShell 按名称运行则终止进程

如果使用下面的 Stop-Process 命令在本地计算机上按进程名称运行,则可以终止该进程的所有实例

Stop-Process -Name "notepad"

在上面的命令中,使用 Name 参数指定进程名称为记事本。

Stop-Process 会终止记事本应用程序的所有实例。

记事本应用程序的每个实例都有自己的 PID。它将停止记事本应用程序的所有实例,因为它具有相同的名称。

酷提示:如何在 PowerShell 中使用 base64 对文件进行编码!

如果使用 PowerShell 按 PID 运行则停止进程

您可以使用 Stop-Process 通过进程 ID 来终止进程,如下所示

Stop-Process -Id 38592 -Confirm -PassThru

在上面的 PowerShell 命令中,Stop-Process 使用 PID 来终止进程 PID 指定的进程。

确认参数提示用于确认是否执行该操作。如果您选择“是”或“全部是”,则会停止正在运行的进程。

确认后,它将终止该过程并打印下面的输出

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName                                                       
-------  ------    -----      -----     ------     --  -- -----------                                                       
    247      15     3360      15164       0.27  38592   1 notepad  

使用进程对象停止进程

如果要使用命令返回或存储在变量中的进程对象来停止进程,请使用 InputObject 参数将对象传递给 Stop-Process cmdlet。

使用 Get-Process cmdlet 获取进程并将进程对象存储在变量中,运行以下命令

# Get Process and store object in variable
$ProcessObject = Get-Process -Name notepad

# Pass object to Stop-Process using InputObject parameter
Stop-Process -InputObject $ProcessObject

# Check if process stopped or not
Get-Process | Where-Object {$_.HasExited}

在上面的 PowerShell 命令中,Stop-Process PowerShell cmdlet 会终止进程,下一个命令会检查被终止的进程是否仍然存在。

停止不属于当前用户的进程

如果要停止不属于当前用户的进程,则需要使用“以管理员身份运行”选项打开 PowerShell。

使用Force参数将终止进程。

如果您尝试在没有管理员选项的情况下终止不属于当前用户的进程,将显示一条消息:

Stop-Process : Cannot stop process 'notepad(1353)' because of the following error: Access is denied
At line:1 char:3

使用以下脚本停止不属于当前用户的进程

Get-Process -Name notepad | Stop-Process -Force

第一个命令使用 Get-Process cmdlet 获取进程记事本并将其传递给第二个命令。

第二个命令使用 Stop-Process cmdlet 通过 Force 参数强制终止进程对象。

注意: 打开以管理员身份运行的 PowerShell 以停止进程。只有管理员组成员才能停止不属于当前用户的进程。

酷提示:如何在 PowerShell 中获取进程用户名!

结论

我希望上面的文章可以帮助您使用 Stop-Process PowerShell cmdlet 来终止按名称或进程 ID (PID) 指定的进程或终止不属于当前用户的进程。

您可以在 ShellGeek 主页上找到有关 PowerShell Active Directory 命令和 PowerShell 基础知识的更多主题。

相关文章