停止进程 - 使用 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 基础知识的更多主题。
