当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何终止远程系统上的 Windows 进程

作者:精品下载站 日期:2024-12-14 13:08:44 浏览:14 分类:玩电脑

如何终止远程系统上的 Windows 进程


也许您正在远程 Windows 服务器上愉快地工作,然后发现一个运行错误的进程耗尽了宝贵的 CPU 周期。你做什么工作?杀了它!

在本教程中,您将学习如何使用本机实用程序、第三方实用程序和 PowerShell 终止 Windows 进程。您将首先学习如何检查 Windows 中正在运行的进程,然后终止正在运行的进程。

先决条件

如果您想按照本教程中的步骤进行操作,请确保提前准备好以下内容:

  • Windows PC - 本教程中的所有演示都将使用 Windows 10,但 Windows 7+ 也可以使用。
  • Windows Server 或另一个 Windows 桌面用作终止远程任务的目标。本教程使用独立的 Windows Server 2016 作为远程服务器。
  • Microsoft 的 Sysinternals 套件。
  • Windows PowerShell 5 或更高版本。本教程使用PowerShell v7.1.3

使用任务列表查询远程Windows进程

从 Windows XP 开始,出现了一个名为任务列表的有用工具。任务列表是一个方便的工具,可以查询远程计算机上的进程。在杀死进程之前,您必须首先发现它们!

在桌面上打开 PowerShell 会话或命令提示符,然后键入以下命令以显示远程计算机上所有正在运行的进程。

以下命令查询远程计算机 (/S),使用管理员用户名 (/U) 和密码 (/P) 验证连接。

tasklist /S WIN-BANGJIEFNOC.local.net /U administrator /P password

您会注意到下面没有出现会话名称。由于您在远程计算机上运行 tasklist,因此 tasklist 不提供会话名称

[玩转系统] 如何终止远程系统上的 Windows 进程

也许您更喜欢只列出一个进程。不是问题。为此,请指定 /FI 参数。 /FI 参数接受传递到 tasklist 的查询以过滤掉特定进程。

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'

[玩转系统] 如何终止远程系统上的 Windows 进程

使用 PSList 查询远程 Windows 进程

另一个查看正在运行的进程的工具是 PSList,该实用程序是 Sysinternals Suite 的一部分。这套工具已经存在很多年了,由 Azure 首席技术官 Mark Russinovich 创建!

让我们开始了解如何查看远程计算机上正在运行的进程。

1. 在桌面上打开 PowerShell 会话或命令提示符,然后将目录更改为提取 Sysinternal Suite 的位置。

2. 在 PowerShell 会话中,运行以下命令以实时显示远程计算机上正在运行的进程以及关联的 CPU 使用情况。

下面的命令运行 pslist 来查询 WIN-BANGJIEFNOC 计算机上验证 Administrator 用户名 (-u) 的所有远程 Windows 进程代码>)和密码(-p)。

该命令使用 -s 开关将 pslist 转换为重复更新列表的“任务管理器模式”。

如果您是第一次使用 Sysinternals 工具,可能会出现一条横幅,要求您接受 EULA;单击“确定”。

.\pslist \WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -s

您现在可以看到运行该命令的以下输出;在本文中,您将关注其中的 3 个值。如下所示。

  • 名称:进程的名称。
  • Pid:进程标识符,本教程中使用的一个关键值,PID号可用于杀死远程进程。它是分配给进程的数字 ID。
  • CPU:这会近乎实时地显示总体可用 CPU 的利用率。

其他值与内存相关,超出了本文的范围。

[玩转系统] 如何终止远程系统上的 Windows 进程

3. 由于第二步使用了 -s 开关,因此请按 Ctrl-C 退出 pslist 以返回控制台。

使用 -e 开关后跟进程名称来缩小返回的进程列表,例如 -e Winlogon

使用 PSKill 按进程名称终止进程

一旦您知道如何查找远程进程,现在让我们深入研究如何杀死它们。首先,让我们介绍一下 pskill 实用程序。首先,了解如何通过进程名称杀死进程。

1. 确保远程服务器上有一个可以终止的进程。本教程将使用记事本程序。

2. 在本地桌面上打开 PowerShell 会话或命令提示符,将目录更改为提取 Sysinternal Suite 的位置,然后运行以下命令。您可以看到 pskill 的语法与 pslist 类似。

.\pskill.Exe \WIN-BANGJIEFNOC.local.net -u administrator -p 'password' -e notepad.exe

[玩转系统] 如何终止远程系统上的 Windows 进程

3. 现在,按照上一节中的说明运行 pslist,以确认进程确实已停止。

.\pslist \WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -e notepad.exe

[玩转系统] 如何终止远程系统上的 Windows 进程

使用 PSKill 按进程 ID 终止进程

如果只有该进程的一个实例正在运行或者您想要终止具有该名称的所有进程,则按名称终止进程可能足以满足您的需求。如果您要终止正在运行的进程的特定实例怎么办?以下步骤将演示这一点。

1. 在远程服务器上,打开记事本两次;您将在此演示中终止其中一个进程;当然,您可以替换其他流程。

2. 运行以下命令,记下 Pid 之一,如下所示;您需要它来进行下一步。

.\pslist \WIN-BANGJIEFNOC.local.net -u Administrator -p password -e notepad

[玩转系统] 如何终止远程系统上的 Windows 进程

3. 使用 PID,现在运行 pskill,提供 PID 作为最后一个参数。

.\pskill.Exe \WIN-BANGJIEFNOC.local.net -u administrator -p password 1984

[玩转系统] 如何终止远程系统上的 Windows 进程

4. 最后,通过重新运行 pslist 检查是否仍有一个记事本实例正在运行。您现在应该只能看到一个记事本实例正在运行。

[玩转系统] 如何终止远程系统上的 Windows 进程

使用 TaskKill 按名称终止远程 Windows 进程

taskkill 实用程序是 Windows 原生的,包含更多命令行选项,用于通过用户名和应用程序名称重新启动进程。让我们开始吧,再次杀死记事本!

按名称杀死进程

1. 在远程服务器上,打开记事本; Notepad 是您将在本演示中杀死的进程;当然,您可以替换其他过程。

2. 在桌面上打开 PowerShell 会话或命令提示符。键入以下命令将杀死 notepad.exe

taskkill /S WIN-BANGJIEFNOC.local.net /you administrator /p password /IM notepad.exe

输出如下所示:

/IM是Image的参数;在本例中,它是 notepad.exe

[玩转系统] 如何终止远程系统上的 Windows 进程

3. 要确认进程已停止,请运行 tasklist。您现在应该看到没有任务与该过滤器匹配。

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'

[玩转系统] 如何终止远程系统上的 Windows 进程

使用 TaskKill 按 PID 杀死远程 Windows 进程

使用 PID 使用 taskkill 终止进程与使用进程名称没有太大区别。但是,由于您无法使用该名称,因此您首先需要找到 PID,然后将其传递给 taskkill

假设您的记事本在远程 Windows 主机上运行:

1. 如下所示运行tasklist,找到Notepad进程的PID。记下PID之一,如下所示;您需要它来进行下一步。

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'

[玩转系统] 如何终止远程系统上的 Windows 进程

2. 现在,运行 taskkill,并提供 PID 作为最后一个参数。

taskkill /S WIN-BANGJIEFNOC.local.net /u administrator /p 'password' /PID 3776

[玩转系统] 如何终止远程系统上的 Windows 进程

3. 最后,运行tasklist以确认进程已停止。

[玩转系统] 如何终止远程系统上的 Windows 进程

使用 PowerShell 终止远程 Windows 进程

PowerShell 为您提供了多种终止远程进程的选项;第一个 cmdlet Stop-Process 无法本机终止远程进程,因为它没有指定计算机名称的选项。但是,您可以通过 PowerShell 远程处理远程运行 Stop-Process 来解决此问题。

1. 如果您的主机和远程服务器不在 Active Directory 域中,请首先提供用户名和密码,创建 PSCredential 对象。

$credentials = Get-Credential

[玩转系统] 如何终止远程系统上的 Windows 进程

2. 接下来,由于本教程将使用 SSL 连接到远程计算机并使用自签名证书,因此创建一个 PSSessionOption,它将跳过受信任证书颁发机构的证书检查。

$PSSessionOption = New-PSSessionOption -SkipCACheck

3. 现在,使用 Enter-PSSession 命令连接到服务器,这将建立与远程服务器的交互式会话。

下面的命令使用上面提供的用户名和密码 (Credential) 连接到 WIN-BANGJIEFNOC.local.net 计算机,跳过证书颁发机构检查 (SessionOption ),并通过 SSL (UseSSL) 连接。

Enter-PSSession -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -SessionOption $PSSessionOption -UseSSL

[玩转系统] 如何终止远程系统上的 Windows 进程

4. 连接到远程主机后,通过运行 Get-Process 检查要终止的进程。在这种情况下,您将看到 notepad 进程。

Get-Process -ProcessName Notepad

[玩转系统] 如何终止远程系统上的 Windows 进程

5. 要终止此进程,请运行 Stop-Process,如下所示。

Stop-Process -ProcessName Notepad

6. 最后,确认您已通过重新运行 Get-Process 终止了该进程,您应该会收到一条错误消息。

[玩转系统] 如何终止远程系统上的 Windows 进程

如果您想以非交互方式停止远程 Windows 进程,请使用带有以下参数的 Invoke-Command 命令:Invoke-Command -ComputerName WIN-BANGJIEFNOC.local。 net -Credential $credentials -ScriptBlock {Stop-Process -ProcessName notepad} -UseSSL。将 Stop-Proces 命令封装在 ScriptBlock 参数中将命令发送到远程主机。

结论

您已经了解了终止远程进程的不同方法,以及如何克服网络防火墙规则可能阻止实用程序正常工作的情况;本教程可能还可以帮助您修复 Windows。

您学到的实用程序是强大的工具;小心使用!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯