Возможно, вы работаете счастливо на удаленном сервере Windows, а затем обнаруживаете процесс, который работает неправильно, потребляя ценные процессорные циклы. Что делать? Убейте его!
В этом учебном пособии вы узнаете, как завершить процесс Windows, используя встроенные утилиты, сторонние утилиты и PowerShell. Сначала вы узнаете, как просматривать запущенные процессы в Windows, а затем завершать их выполнение.
Предварительные условия
Если вы хотите следовать за шагами в этом учебнике, убедитесь, что у вас есть следующее заранее:
- A Windows PC – All demos in this tutorial will use Windows 10, but Windows 7+ will work also.
- A Windows Server or another Windows desktop to use as your target for killing the remote tasks. This tutorial uses a standalone Windows Server 2016 as the remote server.
- Sysinternals Suite от Microsoft.
- Windows PowerShell 5 или выше. В этом учебнике используется PowerShell v7.1.3.
Запрос удаленного процесса Windows с помощью Tasklist
С момента появления Windows XP существует полезный инструмент под названием tasklist. Tasklist – это удобный инструмент для запроса процессов на удаленных компьютерах. Прежде чем завершить процесс, вы должны сначала их обнаружить!
Откройте сеанс PowerShell или командную строку на вашем рабочем столе и введите следующую команду, чтобы отобразить все запущенные процессы на удаленном компьютере.
Ниже приведена команда для запроса удаленного компьютера (/S
), аутентификация соединения с именем пользователя администратора (/U
) и паролем (/P
).
Вы заметите ниже, что Название сеанса не появляется. Поскольку вы запускаете tasklist
на удаленном компьютере, tasklist
не предоставляет Название сеанса.

Возможно, вы предпочтете перечислить только один процесс. Проблем нет. Для этого укажите параметр /FI
. Параметр /FI
принимает запрос, который передается в tasklist
для фильтрации определенных процессов.

Запрос удаленного процесса Windows с помощью PSList
Еще один инструмент для просмотра работающих процессов – PSList, и эта утилита является частью Sysinternals Suite. Этот набор инструментов существует многие годы и был создан Марком Руссиновичем, главным техническим директором Azure!
Давайте начнем с того, как вы можете просматривать работающие процессы на удаленном компьютере.
1. Откройте сеанс PowerShell или командную строку на вашем рабочем столе и измените каталог на тот, где вы распаковали набор Sysinternal Suite.
2. В вашем сеансе PowerShell выполните следующую команду, чтобы отобразить работающие процессы на удаленном компьютере и связанный CPU использование в реальном времени.
Команда ниже запускает pslist
для запроса всех удаленных процессов Windows на компьютере WIN-BANGJIEFNOC
, аутентифицируя имя пользователя Administrator
(-u
) и пароль (-p
).
Команда использует переключатель -s
, включающий “режим диспетчера задач” для pslist
, который повторно обновляет список.
Если вы впервые используете инструмент Sysinternals, может появиться баннер, который предлагает принять лицензионное соглашение пользователя; нажмите OK.
Теперь вы видите следующий вывод от выполнения этой команды; для этой статьи вас интересуют 3 из этих значений. Как показано ниже.
- Имя: Название процесса.
- Pid: Идентификатор процесса, критическое значение, используемое в этом учебнике, номер PID можно использовать для завершения удаленного процесса. Это числовой идентификатор, присвоенный процессу.
- CPU: Здесь показывается практически в реальном времени использование вашего общего CPU.
Другие значения связаны с памятью и выходят за рамки этой статьи.

3. Поскольку в шаге два использовался переключатель -s
, нажмите Ctrl-C, чтобы выйти из pslist
и вернуться к консоли.
Уменьшите список возвращенных процессов, используя переключатель
-e
, за которым следует имя процесса, например,-e Winlogon
.
Убийство процессов по имени процесса с помощью PSKill
Как только вы узнаете, как найти удаленные процессы, давайте теперь рассмотрим, как их убить. Для начала рассмотрим утилиту pskill . Сначала изучите, как убивать процессы по имени процесса.
1. Убедитесь, что у вас есть процесс, который вы можете завершить на вашем удаленном сервере. В этом руководстве будет использоваться процесс блокнота.
2. Откройте сеанс PowerShell или командную строку на вашем локальном компьютере и перейдите в каталог, куда вы извлекли Sysinternal Suite, и выполните следующую команду. Вы можете увидеть синтаксис для pskill
, аналогичный pslist
.

3. Теперь запустите pslist
, как объяснялось в предыдущем разделе, чтобы подтвердить, что процесс действительно остановлен.

Убийство процессов по идентификатору процесса с помощью PSKill
Убийство процесса по имени может быть достаточно для ваших нужд, если работает только один экземпляр этого процесса или вы хотите завершить все процессы с этим именем. Что если вы хотите убить определенный экземпляр запущенного процесса? Следующие шаги продемонстрируют это.
1. На вашем удаленном сервере откройте Блокнот дважды; вы завершите один из этих процессов в этой демонстрации; конечно, вы можете заменить другие процессы.
2. Запустите следующую команду, обратите внимание на один из Pid, как показано ниже; вам понадобится это для следующего шага.

3. Используя PID, теперь запустите pskill
, указав PID в качестве последнего аргумента.

4. Наконец, проверьте, что у вас все еще есть один экземпляр Notepad, запустив повторно pslist
. Теперь вы должны увидеть только один экземпляр Notepad, работающий.

Убийство удаленных процессов Windows с помощью TaskKill по имени
Утилита taskkill по умолчанию присутствует в Windows и включает дополнительные параметры командной строки для перезапуска процессов по имени пользователя и названию приложения. Давайте начнем и снова убьем Notepad!
Убийство процесса по имени
1. На вашем удаленном сервере откройте Notepad; в этом демонстрационном примере Notepad – это процесс, который вы убьете, вы, конечно же, можете заменить его другим процессом.
2. Откройте сеанс PowerShell или командную строку на вашем рабочем столе. Ввод следующей команды убьет notepad.exe
Результат показан ниже:
/IM – это параметр для изображения; в данном случае это notepad.exe

3. Чтобы подтвердить, что процесс остановлен, выполните tasklist
. Теперь вы должны увидеть, что нет задач, соответствующих этому фильтру.

Убийство удаленных процессов Windows с помощью TaskKill по PID
Убийство процесса с помощью taskkill
, используя PID, не сильно отличается от использования имени процесса. Но, поскольку вы не можете использовать имя, вам сначала нужно найти PID, а затем передать его в taskkill
.
Предположим, что у вас запущен Notepad на вашем удаленном хосте Windows:
1. Выполните команду tasklist
, как показано ниже, чтобы найти PID процесса Notepad. Обратите внимание на один из PID, как показано ниже; вам понадобится это для следующего шага.

2. Теперь выполните команду taskkill
, указав PID в качестве последнего аргумента.

3. Наконец, выполните tasklist
, чтобы подтвердить, что процесс остановлен.

Убийство удаленного процесса Windows с помощью PowerShell
PowerShell предоставляет несколько вариантов для завершения удаленных процессов; первая cmdlet Stop-Process
не может убивать удаленный процесс, так как у нее нет опции для указания имени компьютера. Но вы можете обойти эту проблему, запустив Stop-Process
удаленно через PowerShell Remoting.
1. Если ваш хост и удаленный сервер не находятся в домене Active Directory, сначала укажите имя пользователя и пароль, создав объект PSCredential.

2. Далее, поскольку в учебнике будет использоваться SSL для подключения к удаленному компьютеру и самоподписанный сертификат, создайте PSSessionOption, который пропустит проверку сертификата для доверенного удостоверяющего центра.
3. Теперь подключитесь к серверу с помощью команды Enter-PSSession
, которая устанавливает интерактивную сессию на удаленный сервер.
Команда ниже подключается к компьютеру WIN-BANGJIEFNOC.local.net
с использованием указанного выше имени пользователя и пароля (Credential
), пропуская проверку удостоверяющего центра (SessionOption
) и подключаясь через SSL (UseSSL
).

4. После подключения к удаленному хосту проверьте процесс, который вы хотите завершить, выполнив команду Get-Process
. В данном случае вы увидите процесс notepad
.

5. Чтобы завершить этот процесс, выполните команду Stop-Process
, как показано ниже.
6. Наконец, подтвердите, что вы завершили процесс, повторно запустив команду Get-Process
, и вы должны получить сообщение об ошибке.

Если вы хотите завершить удаленный процесс в Windows без взаимодействия, используйте команду
Invoke-Command
с использованием следующих параметров:Invoke-Command -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -ScriptBlock {Stop-Process -ProcessName notepad} -UseSSL
. КомандаStop-Process
в параметреScriptBlock
отправляет команду на удаленный хост.
Заключение
Вы узнали о различных методах прекращения удаленных процессов и о том, как преодолеть ситуации, когда правила брандмауэра сети могут препятствовать правильной работе утилит; этот учебник также мог вам помочь в исправлении проблем в Windows.
Утилиты, о которых вы узнали, – мощные инструменты; используйте их осторожно!
Source:
https://adamtheautomator.com/how-to-kill-a-windows-process/