Stop-Process
Останавливает один или несколько выполняемых процессов.
Синтаксис
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. Остановка всех экземпляров процесса
Stop-Process -Name "notepad"
Эта команда останавливает все экземпляры процесса Блокнота на компьютере. Каждый экземпляр Блокнота выполняется в собственном процессе. В нем используется параметр имени, чтобы указать процессы, все из которых имеют одно и то же имя. Если бы вы использовали параметр id для остановки одних и тех же процессов, вам придется перечислить идентификаторы процессов каждого экземпляра Блокнота.
Пример 2. Остановка конкретного экземпляра процесса
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 для идентификации процесса. Параметр "Подтвердить" направляет 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 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
Эти команды показывают эффект использования Force для остановки процесса, который не принадлежит пользователю.
Первая команда использует Get-Process
для получения процесса Lsass. Оператор конвейера отправляет процесс Stop-Process
, чтобы остановить его. Как показано в примере выходных данных, первая команда завершается ошибкой с сообщением "Отказано в доступе", так как этот процесс может быть остановлен только членом группы администраторов на компьютере.
Когда PowerShell открывается с помощью параметра "Запуск от имени администратора", и команда повторяется, PowerShell запрашивает подтверждение.
Вторая команда указывает Принудительное для подавления запроса. В результате процесс останавливается без подтверждения.
Параметры
-Confirm
Запрашивает подтверждение перед запуском командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Force
Останавливает указанные процессы без запроса на подтверждение. По умолчанию Stop-Process
запрашивает подтверждение перед остановкой любого процесса, который не принадлежит текущему пользователю.
Чтобы найти владельца процесса, используйте командлет Get-CimInstance
для получения объекта Win32_Process, представляющего процесс, а затем используйте метод GetOwner объекта.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Id
Задает идентификаторы процессов, которые необходимо остановить. Чтобы указать несколько идентификаторов, используйте запятые для разделения идентификаторов. Чтобы найти ИДЕНТИФИКАТОР процесса, введите Get-Process
.
Тип: | Int32[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-InputObject
Указывает объекты процесса, которые нужно остановить. Введите переменную, содержащую объекты, или введите команду или выражение, которое получает объекты.
Тип: | Process[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Name
Задает имена процессов, которые необходимо остановить. Можно ввести несколько имен процессов, разделенных запятыми или использовать подстановочные знаки.
Тип: | String[] |
Aliases: | ProcessName |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | True |
-PassThru
Возвращает объект, представляющий процесс. По умолчанию этот командлет не создает выходные данные.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет, если командлет выполняется. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Объект процесса можно передать в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
При использовании параметра PassThru этот командлет возвращает объект Process, представляющий остановленный процесс.
Примечания
PowerShell включает следующие псевдонимы для Stop-Process
:
- Все платформы:
spps
- Виндоус:
kill
Свойства и методы инструментария управления Windows (WMI Win32_Process) можно также использовать в Windows PowerShell. Дополнительные сведения см. в Get-CimInstance
и пакете SDK WMI.
- При остановке процессов осознайте, что остановка процесса может остановить процесс и службы, зависящие от процесса. В крайнем случае остановка процесса может остановить Windows.
Связанные ссылки
PowerShell