Powershell process stop: Stop-Process (Microsoft.PowerShell.Management) — PowerShell | Microsoft Learn

Содержание

Stop-Process (Microsoft.PowerShell.Management) — PowerShell | Microsoft Learn

  • Ссылка
Модуль:
Microsoft.PowerShell.Management

Останавливает один или несколько запущенных процессов.

Синтаксис

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

Описание

Командлет Stop-Process останавливает один или несколько запущенных процессов. Можно указать процесс по имени процесса или идентификатору процесса (PID) или передать объект процесса в Stop-Process. Stop-Process работает только с процессами, выполняемыми на локальном компьютере.

В Windows Vista и более поздних версиях операционной системы Windows, чтобы остановить процесс, не принадлежащий текущему пользователю, необходимо запустить PowerShell с помощью параметра Запуск от имени администратора. Кроме того, вам не будет предложено подтвердить, если не указан параметр Confirm .

Примеры

Пример 1. Остановка всех экземпляров процесса

PS C:\> Stop-Process -Name "notepad"

Эта команда останавливает все экземпляры процесса Блокнота на компьютере. Каждый экземпляр Блокнота выполняется в отдельном процессе. Он использует параметр Name для указания процессов, все из которых имеют одно и то же имя. Если вы используете параметр Id для остановки одних и того же процесса, необходимо перечислить идентификаторы процессов каждого экземпляра Блокнота.

Пример 2. Остановка определенного экземпляра процесса

PS C:\> Stop-Process -Id 3952 -Confirm -PassThru
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "notepad (3952)". 
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):y
Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
41       2      996       3212    31            3952 notepad

Эта команда останавливает определенный экземпляр процесса Блокнота. Для указания процесса в ней используется идентификатор процесса 3952. Параметр Confirm указывает PowerShell на запрос перед остановкой процесса. Так как запрос содержит имя процесса в дополнение к его идентификатору, это рекомендуется.
Параметр PassThru передает объект процесса в форматировщик для отображения. Без этого параметра после Stop-Process команды не будет отображаться.

Пример 3. Остановка процесса и обнаружение его остановки

calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}

Этот ряд команд запускает и останавливает Calc процесс, а затем обнаруживает остановленные процессы.

Первая команда запускает экземпляр калькулятора.

Вторая команда использует Get-Process получение объекта, представляющего Calc процесс, а затем сохраняет его в переменной $p .

Третья команда останавливает Calc процесс. Он использует параметр InputObject для передачи объекта в Stop-Process.

Последняя команда возвращает все процессы на компьютере, которые были запущены, но теперь остановлены. Он использует Get-Process для получения всех процессов на компьютере. Оператор конвейера (|) передает результаты командлету Where-Object , который выбирает те, в которых значение свойства HasExited $True. HasExited — это только одно свойство объектов процесса. Чтобы найти все свойства, введите Get-Process | Get-Member.

Пример 4. Остановка процесса, не принадлежащего текущему пользователю

PS> Get-Process -Name "lsass" | Stop-Process
Stop-Process : Cannot stop process 'lsass (596)' because of the following error: Access is denied
At line:1 char:34
+ Get-Process -Name "lsass" | Stop-Process <<<<
[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process
Warning!
Are you sure you want to perform this action?
Performing operation 'Stop-Process' on Target 'lsass(596)'
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process -Force
[ADMIN]: PS>

Эти команды показывают эффект использования Force для остановки процесса, который не принадлежит пользователю.

Первая команда использует Get-Process для получения процесса Lsass. Оператор конвейера отправляет процесс в , Stop-Process чтобы остановить его. Как показано в примере выходных данных, первая команда завершается сбоем с сообщением Об отказе в доступе, так как этот процесс может остановить только член группы администраторов на компьютере.

Если PowerShell открывается с помощью параметра Запуск от имени администратора и команда повторяется, PowerShell запрашивает подтверждение.

Вторая команда указывает принудительное подавление запроса. В результате процесс останавливается без предупреждения.

Параметры

-Confirm

-Force

-Id

-InputObject

-Name

-PassThru

-WhatIf

Входные данные

Process

Объект процесса можно передать в этот командлет.

Выходные данные

None

По умолчанию этот командлет не возвращает выходные данные.

Process

При использовании параметра PassThru этот командлет возвращает объект Process , представляющий остановленный процесс.

Примечания

PowerShell включает следующие псевдонимы для Stop-Process:

  • Для всех платформ.
    • spps
  • Windows:
    • kill

Вы также можете использовать свойства и методы объекта инструментария управления Windows (WMI) Win32_Process в Windows PowerShell. Дополнительные сведения см. в разделе Get-CimInstance и пакете SDK для WMI.

  • При остановке процессов поймите, что остановка процесса может остановить процесс и службы, которые зависят от процесса. В крайнем случае остановка процесса может привести к остановке Windows.
  • Debug-Process
  • Get-Process
  • Start-Process
  • Stop-Process
  • Wait-Process

Работа с процессами Powershell Start-Process и управление ими на примерах

Процессы — это один из основных компонентов Windows и чаще всего мы работаем с ними через Task Manager (диспетчер задач), но эта возможность становится весомее если мы используем команды по управлению процессами в Powershell. Основные команды по управлению запущенными задачами можно увидеть так:



Get-Command -Noun Process


Мы получим следующий вывод:


  • Debug-Process — возможность мониторинга и отладки процессов. Для его работы нужно загрузить дополнительное ПО.
  • Get-Process — получение в Powershell списка процессов.
  • Start-Process — запуск процессов.
  • Stop-Process — убивает (завершает) процесс.
  • Wait-Process — ожидание окончания процесса.

Таких команд и вариантов их использования очень много. Например мы можем работать с процессами через WMI или использовать их в связке с мониторингом сетевых подключений через Get-NetTCPConnection. 


Получив список процессов в Powershell можно увидеть что значения отображаются в Кб:



Get-Process


 Изменить это можно через выражения:



# В чем отображать значения 1MB,1GB,1TB и т. д.
$size = 1MB

Get-Process | Format-Table `
 @{Label = "NPM(K)"; Expression = {[int]($_.NPM / $size)}},
 @{Label = "PM(K)"; Expression = {[int]($_.PM / $size)}},
 @{Label = "WS(K)"; Expression = {[int]($_.WS / $size)}},
 @{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
 Id, ProcessName -AutoSize


В скрипте выше будут выводиться 5 свойств, но их намного больше. Посмотреть возможные свойства можно так:



Get-Process | Get-Member -MemberType Properties



Каждое это свойство можно вызвать так:



Get-Process | SELECT Id
# или
Get-Process | FT id


Можно вызвать все свойства всех процессов или по одному выбранному:



Get-Process | SELECT *
# или
Get-Process -Name 'notepad' | SELECT *


Кроме свойств есть еще методы . NET, которые выводятся без дополнительных ключей или с указанием: 



Get-Process | Get-Member -MemberType Method


Методы полезны тем, что ими можно воспользоваться не прибегая к дополнительным командам. Для примера так мы можем остановить процесс notepad (блокнот) тремя разными способами:



# Удаление процесса используя метод .NET
$process = Get-Process -Name "notepad"
$process.Kill()
# Закрытие процесса используя командлет PS
Stop-Process -Name "notepad"
# Остановка процесса используя алиас PS kill
kill -Name "Notepad"
# Если мы хотим убить процесс по его идентификатору
kill -ID 332


Методы .NET не всегда так очевидны, как командлеты поэтому к ним нужно прибегать с осторожностью.


При получении списка процессов есть параметр, который выводит путь откуда запущен процесс и версию файла:



Get-Process -FileVersionInfo


В варианте выше у нас будет много не критичных ошибок:


  • Get-Process : Не удалось перечислить информацию о версиях файла для процесса «svchost».
  • Get-Process : Cannot enumerate the file version information of the «csrss» process.

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



Get-Process -FileVersionInfo -ErrorAction SilentlyContinue


Или запросить информацию о конкретном процессе:



Get-Process -Name 'notepad' -FileVersionInfo



Ключ FileVersionInfo это три свойства: Product, FileVersion и Path каждый из которых можно вывести отдельно. Получим процессы в Powershell со свойством времени запуска и отсортируем их:



Get-Process | select StartTime,Path,Name | sort StartTime


Если нужно выяснить когда и кто запустил процесс нужно добавить параметр IncludeUserName. В моем примере это два процесса:



Get-Process -Name 'notepad','explorer' -IncludeUserName | ft starttime,ProcessName,UserName


Эти же команды можно выполнять удаленно. Во всех командах Powershell, где есть ключ ComputerName можно указать минимум один удаленный компьютер:



Get-Process -ComputerName 'AD1','localhost'


Выполняя удаленную команду вы можете получить две ошибки. Первую, если у вас не настроена возможность удаленного управления в Powershell. И вторая, если вы укажете ключ -IncludeUserName, почему-то он не работает совместно с ComputerName:


  • Get-Process : Parameter set cannot be resolved using the specified named parameters.

 


Запуск процессов с Powershell Start-Process


На примере запуска блокнота команда выполняется так:



Start-Process -FilePath 'notepad'


Если исполняемый файл находится в другом месте нужно указать путь:



Start-Process -FilePath 'C:\Users\Administrator\Desktop\test. txt'


 Если в программа может принимать аргументы их так же можно добавить:



Start-Process -FilePath tracert -ArgumentList "-d -4 fixmypc.ru"


По умолчанию окно процесса разворачивается. Если хотите запустить свернутым, то добавьте ключ WindowStyle:



Start-Process -FilePath tracert -ArgumentList "-d -4 fixmypc.ru" -WindowStyle minimized


Ключ WindowStyle принимает 4 значения:


  • minimized — свернутый вариант.
  • hidden —  скрытый режим.
  • normal — обычный.
  • maximized — полностью развернутый.

Добавив ключ NoNewWindow, в случае с tracert, команда выполнится в текущем окне:



Start-Process -FilePath tracert -ArgumentList "-d -4 fixmypc.ru" -WindowStyle minimized


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


  • RedirectStandardOutput — перенаправляет вывод
  • RedirectStandardError  — перенаправляет ошибки
  • RedirectStandardInput — перенаправляет ввод

Воспользоваться этими ключами можно так:



Start-Process tracert -ArgumentList "-d -4 fixmypc.ru" -RedirectStandardOutput c:\success.txt -RedirectStandardError c:\error.txt  -WindowStyle minimized


 Если нужно открыть файл в определенной программе, то это делается так:



Start-Process -FilePath "C:\Windows\notepad.exe" "C:\Users\Administrator\Desktop\test.txt"


Отмечу, что ни одна команда PS не позволяет запускать процессы в интерактивном сеансе пользователя (например открыть пользователю Excel). Если вы хотите использовать такой метод, то вам нужно использовать psexec от SysInternals либо помещать задачи в планировщик и выполнять оттуда.


 


Пример по работе с процессами в Powershell


Директории, откуда работает основная часть программ относятся к Windows и Program Files. Работа программ из Application Data, например, всегда подозрительна. Мы можем мониторить запуск процессов из этой директории. Нам нужно объявить переменные с путями, которые не будут вызывать подозрений и проверять путь процессов на вхождение:



# Директория для проверки
$path = '*C:\Users*'
# Список компьютеров
$computers = 'AD1','localhost'
# Получение и фильтрация процессов 
$process = $computers |% {Get-Process -ComputerName $_ | where {$_.Path -like $path}
# Вывод результатов
$process
# Завершение процессов (закоментирован от случайного убийства нужных задач)
#$process | kill



Второй пример выполнения — это запуск всех файлов из папки. Обычно скрипты применяются через групповые политики в момент входа пользователя. Если таких скриптов 10, то мы можем поместить их в определенную папку и запускать из планировщика задач указывая только директорию и расширение запускаемого файла и перенаправлять ошибки в индивидуальный файл:



# Директория для поиска файлов
$path = 'C:\dd\*'
# Поиск файлов и включение нужных и исключение ненужных
$items = Get-ChildItem -Path $path -Include '*exe*' -Exclude '*txt*'
# Сетевой путь, куда будут сохраняться ошибки
$error_path = '\\localhost\SYSVOL\'
$items |%  {Start-Process -FilePath $_ -WindowStyle Maximized -RedirectStandardError ($error_path + {hostname} + 'error. txt')}


Обратите внимание, что все файлы с ошибками будут сохраняться с именем компьютеров на котором запущен скрипт. В каждом из скриптов я так же ставил знак *, это связано не с точным вхождением. Например в первом случае после пути C:\Users* мы ожидаем еще символы и установив звездочку мы это указали. В случае Get-ChildItem ситуация похожая, но более подробно мы обсуждали в статье поиск файлов в Powershell.


Мы можем использовать поиск процессов не относящихся к производителям ПО, которые мы устанавливали на ПК пользователей. Для этого есть свойство Company. Не все объекты имеют имя компании, они связаны с задачами операционной системы:



$company = 'microsoft'
Get-Process | where {$_.company -notmatch $company} | Sort Company | Select ID,Name,WS,VM,Company | format-table -AutoSize



По умолчанию мы получаем данные по CPU в секундах, но следующий скрипт вернет процент использования:



function Get-CPUPercent
{
    $CPUPercent = @{
        Name = 'CPUPercent'
        Expression = {
            $TotalSec = (New-TimeSpan -Start $_. StartTime).TotalSeconds
            [Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
        }
    }
 
    Get-Process | 
    Select-Object -Property Name, $CPUPercent, Description |
    Sort-Object -Property CPUPercent -Descending |
    Select-Object -First 10
}
Get-CPUPercent


 Далее эту функцию можно запускать на удаленных компьютерах:



$computers = 'AD1','localhost'
Invoke-Command -ComputerName $computers -ScriptBlock ${function:Get-CPUPercent} | ft


Рекомендую

Подписывайтесь на наш Telegram канал

Теги:

#powershell

Stop-Process (Microsoft.PowerShell.Management) — PowerShell | Microsoft Learn

  • Справочник
Модуль:
Microsoft.PowerShell.Управление

Останавливает один или несколько запущенных процессов.

Синтаксис

 Останов процесса
    [-Ид] 
    [-Пройти через]
    [-Сила]
    [-Что, если]
    [-Подтверждать]
    [] 
 Останов процесса
    -Имя <Строка[]>
    [-Пройти через]
    [-Сила]
    [-Что, если]
    [-Подтверждать]
    [<Общие параметры>] 
 Остановка процесса
    [-InputObject] <Процесс[]>
    [-Пройти через]
    [-Сила]
    [-Что, если]
    [-Подтверждать]
    [] 

Описание

Командлет Stop-Process останавливает один или несколько запущенных процессов. Вы можете указать процесс за процессом
имя или идентификатор процесса (PID) или передать объект процесса в Stop-Process . Stop-Process работает только на
процессов, запущенных на локальном компьютере.

В Windows Vista и более поздних версиях операционной системы Windows для остановки процесса, который не
принадлежит текущему пользователю, вы должны запустить PowerShell с помощью параметра «Запуск от имени администратора». Также,
вам не будет предложено подтвердить, если вы не укажете Подтвердить параметр .

Примеры

Пример 1: Остановить все экземпляры процесса

 PS C:\> Stop-Process -Name "notepad" 

Эта команда останавливает все экземпляры процесса Notepad на компьютере. Каждый экземпляр Блокнота
работает в своем собственном процессе. Он использует параметр Имя для указания процессов, все из которых имеют
то же имя. Если бы вы использовали параметр Id для остановки тех же процессов, вам пришлось бы
перечислите идентификаторы процессов каждого экземпляра Блокнота.

Пример 2. Остановка определенного экземпляра процесса

 PS C:\> Stop-Process -Id 3952 -Confirm -PassThru
Подтверждать
Вы уверены, что хотите выполнить это действие?
Выполнение операции "Stop-Process" над Target "блокнотом (3952)".
[Y] Да [A] Да для всех [N] Нет [L] Нет для всех [S] Приостановить [?] Справка
(по умолчанию "Y"):y
Обрабатывает NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
41 2 996 3212 31 3952 notepad 

Эта команда останавливает определенный экземпляр процесса Блокнота. Он использует идентификатор процесса 3952 для
идентифицировать процесс. Параметр Подтвердить указывает PowerShell запрашивать вас, прежде чем он остановит
процесс. Поскольку приглашение включает имя процесса в дополнение к его идентификатору, это рекомендуется.
Параметр PassThru передает объект процесса средству форматирования для отображения. Без этого
параметр, после Stop-Process 9 не будет отображаться никакой информации.Команда 0026.

Пример 3: остановить процесс и обнаружить, что он остановлен

 calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-процесс | Where-Object {$_.HasExited} 

Эта серия команд запускает и останавливает процесс Calc , а затем обнаруживает процессы, которые
остановился.

Первая команда запускает экземпляр калькулятора.

Вторая команда использует Get-Process получает объект, представляющий Calc процесс, а затем
сохраняет его в переменной $p .

Третья команда останавливает процесс Calc . Он использует параметр InputObject для передачи объекта
до Остановка процесса .

Последняя команда получает все процессы на компьютере, которые были запущены, но сейчас
остановился. Он использует Get-Process для получения всех процессов на компьютере. Оператор трубопровода
( | ) передает результаты на Командлет Where-Object , который выбирает те, где значение
Свойство HasExited равно $True. HasExited — это только одно из свойств объектов процесса. Чтобы найти все
свойства, введите Get-Process | Get-член .

Пример 4: остановить процесс, не принадлежащий текущему пользователю

 PS> Get-Process -Name "lsass" | Остановить процесс
Stop-Process: не удается остановить процесс «lsass (596)» из-за следующей ошибки: доступ запрещен
В строке:1 символ:34
+ Get-Process -Name "lsass" | Остановка процесса <<<<
[АДМИН]: PS> Get-Process -Name "lsass" | Остановить процесс
Предупреждение!
Вы уверены, что хотите выполнить это действие?
Выполнение операции «Stop-Process» на Target «lsass(596)'
[Y] Да [A] Да для всех [N] Нет [L] Нет для всех [S] Приостановить [?] Справка (по умолчанию "Y"):
[АДМИН]: PS> Get-Process -Name "lsass" | Остановить-Процесс-Принудительно
[ADMIN]: PS> 

Эти команды показывают эффект использования Force для остановки процесса, который не принадлежит пользователю.

Первая команда использует Get-Process для получения процесса Lsass. Оператор конвейера отправляет процесс
на Stop-Process , чтобы остановить его. Как показано в образце выходных данных, первая команда завершается с ошибкой Access.
сообщение об отказе, так как этот процесс может быть остановлен только членом группы администраторов на
компьютер.

Когда PowerShell открывается с использованием параметра «Запуск от имени администратора» и команда повторяется,
PowerShell запрашивает подтверждение.

Вторая команда указывает Принудительно для подавления запроса. В результате процесс останавливается
без подтверждения.

Параметры

-Подтвердить

-Принудительно

-Идентификатор

-InputObject

-Имя

-PassThru

-WhatIf

Входы

Процесс

Вы можете передать объект процесса этому командлету.

Выходные данные

Нет

По умолчанию этот командлет не возвращает никаких выходных данных.

Process

При использовании параметра PassThru этот командлет возвращает объект Process , представляющий
остановленный процесс.

Примечания

PowerShell включает следующие псевдонимы для Stop-Process :

  • Все платформы:
    • спс
  • Windows:
    • убить

Вы также можете использовать свойства и методы инструментария управления Windows (WMI)
Объект Win32_Process в Windows PowerShell. Дополнительные сведения см. в разделе Get-CimInstance и
WMI SDK.

  • При остановке процессов помните, что остановка процесса может остановить процесс и службы, которые зависят
    на процессе. В крайнем случае, остановка процесса может остановить Windows.
  • Процесс отладки
  • Процесс получения
  • Запуск процесса
  • Остановить процесс
  • Процесс ожидания

Команда PowerShell Kill Process: пошаговое руководство

Мы финансируемся нашими читателями и можем получать комиссию, когда вы покупаете по ссылкам на нашем сайте.

Вы можете убить процесс через PowerShell, что открывает перспективу интеграции управления процессом в сценарий.

Стивен Купер

@VPN_News ОБНОВЛЕНО: 9 января 2023 г.

PowerShell дает вам возможность управлять задачами, создавая собственные сценарии. Одной из основных обязанностей системного администратора является обеспечение эффективной работы сервера. Иногда, чтобы правильно управлять сервером, нужно убить процесс. Это простая задача для выполнения в PowerShell, и если вы можете написать свои собственные сценарии PowerShell, вы можете включить в них процедуры завершения процесса.

Можно убить любой процесс, в том числе работающий в фоновом режиме, предоставляющий услуги другим программам. Поэтому важно, чтобы вы точно знали, для чего предназначен каждый процесс, и убедитесь, что вы не завершаете процесс, который предоставляет важные услуги приложениям, ориентированным на пользователя.

См. также: 25 основных команд PowerShell

Задача определения того, какие процессы являются важными, а какие заброшены и требуют очистки, — это тема для отдельного разговора. Прямо сейчас мы просто рассмотрим, как PowerShell можно использовать для завершения процесса.

Идентификация процесса

Вы, вероятно, не захотите запускать в операционной системе команду, которая завершает все процессы. Это означает, что для того, чтобы убить один процесс, вам нужно знать, как он идентифицируется. Windows присваивает идентификатор процесса (PID) каждому запускаемому процессу.

В этом руководстве мы покажем вам, как вы можете отслеживать процессы через интерфейс PowerShell, потому что это позволит вам решить, какой процесс вы хотите остановить.

Откройте среду PowerShell

1. Чтобы открыть окно PowerShell, введите powershell в поле поиска меню «Пуск» и нажмите «Запуск от имени администратора» , который указан в качестве параметра под заголовком приложения PowerShell. показано на правой панели результатов.

2. Windows запросит у вас разрешение на продолжение. Нажмите OK , и приложение PowerShell откроется. Это показывает синий фон и имеет подсказку PowerShell вверху. В подсказке также отображается текущий каталог. По умолчанию это C:\Windows\system32.

3. Если вы хотите запускать свои собственные сценарии из этого приглашения, вы можете изменить каталог с помощью команды cd <каталог> (замените имя каталога, в который вы хотите перейти, <каталог>).

Получить список запущенных процессов

Все методы, доступные для уничтожения процесса, требуют PID в качестве параметра. Список запущенных процессов может быть длинным и будет прокручиваться за пределы экрана. Вы можете перемещаться вверх и вниз по экрану с помощью ползунка справа от окна PowerShell. Другой вариант — направить вывод утилиты списка процессов в more, что приостановит отображение, когда будет показан полный экран, до тех пор, пока вы не нажмете клавишу пробела. Введите список задач | more , чтобы увидеть все текущие процессы.

PID — второй столбец выходных данных. В первом столбце перечислены имена процессов. Вы заметите, что многие процессы называются svchost.exe, что не очень полезно, потому что, если вы хотите остановить один из этих процессов, невозможно понять, какой из них вызывает у вас проблемы.

Более подробную информацию о процессе можно получить с помощью команды get-process -ID | выбрать объект * (поместите PID процесса вместо ).

После того, как вы определили процесс, который хотите завершить, у вас есть два варианта его уничтожения: taskkill и stop-process.

Завершить процесс с помощью Taskkill

Taskkill позволяет завершить процесс либо по его PID, либо по имени, указанному для него в выходных данных списка задач.

Чтобы остановить процесс по его идентификатору, используйте taskkill /F /PID , например taskkill /F /ID 312 7, если 3127 — это PID процесса, который вы хотите убить.

Чтобы остановить процесс по его имени, используйте taskkill /IM <имя-процесса> /F , например taskkill /ID mspaint. exe /F .

Завершить процесс с помощью Stop-Process

Как и Taskkill, Stop-Process позволяет вам использовать PID или имя процесса для завершения процесса. Имя должно быть таким, как показано в выходных данных списка задач.

Чтобы остановить процесс по его идентификатору, используйте формат: Stop-Process -ID -Force , например. Stop-Process -ID 3127 -Force .

Чтобы остановить процесс по его имени, используйте формат: Stop-Process -Name -Force , например. Stop-Process -Name mspaint.exe -Force .

Завершить процесс без PowerShell

Если вы просто хотите завершить процесс и не заинтересованы в использовании команды, которую можно поместить в сценарий, самый простой способ — через Диспетчер задач, который является частью графическая среда Windows.

Чтобы открыть Диспетчер задач, щелкните правой кнопкой мыши свободное место на панели задач и выберите в контекстном меню Диспетчер задач.

В диспетчере задач прокрутите список запущенных процессов, которые отображаются на вкладке Процесс интерфейса. Нажмите на процесс, который вы хотите остановить, а затем нажмите кнопку Завершить задачу в правом нижнем углу интерфейса.

Заключение

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

Взгляните на SolarWinds Server & Application Monitor. Этот инструмент включает управление процессами. На нем есть экран, на котором показаны все запущенные процессы, а также есть кнопка уничтожения. Эту утилиту можно настроить на поиск определенных условий, таких как процесс, который выполняется дольше заданного времени, или процесс, который кажется неактивным.