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


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 с помощью параметра запуска от имени администратора. Кроме того, вам не будет предложено подтвердить, если вы не укажете параметр "Подтвердить ".

Примеры

Пример 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. Параметр "Подтвердить " направляет 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

Запрос подтверждения перед выполнением командлета.

Тип: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
  • Windows:
    • kill

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

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