Как завершить процесс Windows на удаленной системе

Возможно, вы работаете счастливо на удаленном сервере 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 /S WIN-BANGJIEFNOC.local.net /U administrator /P password

Вы заметите ниже, что Название сеанса не появляется. Поскольку вы запускаете tasklist на удаленном компьютере, tasklist не предоставляет Название сеанса.

list of processes on a remote server

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

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
The output of tasklist showing a specific process

Запрос удаленного процесса Windows с помощью PSList

Еще один инструмент для просмотра работающих процессов – PSList, и эта утилита является частью Sysinternals Suite. Этот набор инструментов существует многие годы и был создан Марком Руссиновичем, главным техническим директором Azure!

Давайте начнем с того, как вы можете просматривать работающие процессы на удаленном компьютере.

1. Откройте сеанс PowerShell или командную строку на вашем рабочем столе и измените каталог на тот, где вы распаковали набор Sysinternal Suite.

2. В вашем сеансе PowerShell выполните следующую команду, чтобы отобразить работающие процессы на удаленном компьютере и связанный CPU использование в реальном времени.

Команда ниже запускает pslist для запроса всех удаленных процессов Windows на компьютере WIN-BANGJIEFNOC, аутентифицируя имя пользователя Administrator (-u) и пароль (-p).

Команда использует переключатель -s, включающий “режим диспетчера задач” для pslist, который повторно обновляет список.

Если вы впервые используете инструмент Sysinternals, может появиться баннер, который предлагает принять лицензионное соглашение пользователя; нажмите OK.

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

Теперь вы видите следующий вывод от выполнения этой команды; для этой статьи вас интересуют 3 из этих значений. Как показано ниже.

  • Имя: Название процесса.
  • Pid: Идентификатор процесса, критическое значение, используемое в этом учебнике, номер PID можно использовать для завершения удаленного процесса. Это числовой идентификатор, присвоенный процессу.
  • CPU: Здесь показывается практически в реальном времени использование вашего общего CPU.

Другие значения связаны с памятью и выходят за рамки этой статьи.

Output in real-time of pslist

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
Output of pskill

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

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

Убийство процессов по идентификатору процесса с помощью PSKill

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

1. На вашем удаленном сервере откройте Блокнот дважды; вы завершите один из этих процессов в этой демонстрации; конечно, вы можете заменить другие процессы.

2. Запустите следующую команду, обратите внимание на один из Pid, как показано ниже; вам понадобится это для следующего шага.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p password -e notepad
Using pslist to list PID’s of Notepad

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

.\pskill.Exe \\WIN-BANGJIEFNOC.local.net -u administrator -p password 1984
The output of pskill for a particular PID

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

Output of pslist

Убийство удаленных процессов Windows с помощью TaskKill по имени

Утилита taskkill по умолчанию присутствует в Windows и включает дополнительные параметры командной строки для перезапуска процессов по имени пользователя и названию приложения. Давайте начнем и снова убьем Notepad!

Убийство процесса по имени

1. На вашем удаленном сервере откройте Notepad; в этом демонстрационном примере Notepad – это процесс, который вы убьете, вы, конечно же, можете заменить его другим процессом.

2. Откройте сеанс PowerShell или командную строку на вашем рабочем столе. Ввод следующей команды убьет notepad.exe

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

Результат показан ниже:

/IM – это параметр для изображения; в данном случае это notepad.exe

The output of taskkill command

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

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

Убийство удаленных процессов Windows с помощью TaskKill по PID

Убийство процесса с помощью taskkill, используя PID, не сильно отличается от использования имени процесса. Но, поскольку вы не можете использовать имя, вам сначала нужно найти PID, а затем передать его в taskkill.

Предположим, что у вас запущен Notepad на вашем удаленном хосте Windows:

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

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
the output of tasklist to view PIDS

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

taskkill /S WIN-BANGJIEFNOC.local.net /u administrator /p 'password' /PID 3776
The output of taskkill specifying a particular PID

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

Output of tasklist

Убийство удаленного процесса Windows с помощью PowerShell

PowerShell предоставляет несколько вариантов для завершения удаленных процессов; первая cmdlet Stop-Process не может убивать удаленный процесс, так как у нее нет опции для указания имени компьютера. Но вы можете обойти эту проблему, запустив Stop-Process удаленно через PowerShell Remoting.

1. Если ваш хост и удаленный сервер не находятся в домене Active Directory, сначала укажите имя пользователя и пароль, создав объект PSCredential.

$credentials = Get-Credential
Setting up credentials

2. Далее, поскольку в учебнике будет использоваться SSL для подключения к удаленному компьютеру и самоподписанный сертификат, создайте PSSessionOption, который пропустит проверку сертификата для доверенного удостоверяющего центра.

$PSSessionOption = New-PSSessionOption -SkipCACheck

3. Теперь подключитесь к серверу с помощью команды Enter-PSSession, которая устанавливает интерактивную сессию на удаленный сервер.

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

Enter-PSSession -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -SessionOption $PSSessionOption -UseSSL
Using Enter-PsSession for an interactive session

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

Get-Process -ProcessName Notepad
Output of Get-Process

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

Stop-Process -ProcessName Notepad

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

Checking for Notepad as a running 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/