Поделиться через


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

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

Process

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

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

None

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

Process

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

Примечания

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

  • Все платформы:
    • spps
  • Виндоус:
    • kill

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

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