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

Синтаксис

Stop-Process [-Id] <Int32[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Process -InputObject <Process[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Process -Name <string[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Описание

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

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

Параметры

-Force

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

Чтобы определить владельца процесса, необходимо с помощью командлета Get-WmiMethod получить объект Win32_Process, представляющий процесс, а затем использовать метод GetOwner объекта.

Обязательно?

false

Позиция?

named

Значение по умолчанию

False

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Id <Int32[]>

Задает идентификаторы останавливаемых процессов. При вводе нескольких идентификаторов необходимо разделять их запятыми. Чтобы определить идентификатор процесса, введите команду Get-Process. Имя параметра ("Id") указывать необязательно.

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-InputObject <Process[]>

Останавливает процессы, представленные указанными объектами процессов. Введите переменную, содержащую объекты, либо команду или выражение для получения объектов.

Обязательно?

true

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByValue)

Принимать подстановочные знаки?

false

-Name <string[]>

Задает имена останавливаемых процессов. Можно ввести несколько имен процессов, разделяя их запятыми, либо использовать подстановочные знаки.

Обязательно?

true

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-PassThru

Возвращает объект, представляющий процесс. По умолчанию этот командлет не формирует никаких выходных данных.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Confirm

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-WhatIf

Описывает, что произойдет при выполнении команды, без ее фактического выполнения.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

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

System.Diagnostics.Process

Объект процесса можно передать командлету Stop-Process по конвейеру.

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

Нет или System.Diagnostics.Process

Если задан параметр PassThru, командлет Stop-Process возвращает объект System.Diagnostics.Process, представляющий остановленный процесс. В противном случае этот командлет не формирует никаких выходных данных.

Примечания

Командлет Stop-Process также можно вызывать с помощью встроенных псевдонимов "kill" и "spps". Дополнительные сведения см. в разделе About_Aliases.

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

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

Пример 1

C:\PS>stop-process -name notepad

Описание
-----------
Эта команда останавливает все экземпляры процесса Notepad на компьютере. (Каждый экземпляр процесса Notepad выполняется в отдельном процессе.) Для задания процессов используется параметр Name: все экземпляры процесса имеют одинаковое имя. При обращении к экземплярам с помощью идентификаторов необходимо было бы перечислить идентификаторы всех экземпляров процесса Notepad.






Пример 2

C:\PS>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

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






Пример 3

C:\PS>calc

c:\PS>$p = get-process calc

c:\PS>stop-process -inputobject $p

c:\PS>get-process | where-object {$_.HasExited}

Описание
-----------
Данная последовательность команд запускает и останавливает процесс Calc, а затем определяет остановленные процессы. 

Первая команда ("calc") запускает экземпляр приложения "Калькулятор". Вторая команда ("$p = get-process calc") с помощью командлета Get-Process извлекает объект, представляющий процесс Calc, и сохраняет его в переменной $p. Третья команда ("stop-process -inputobject $p") с помощью командлета Stop-Process останавливает процесс Calc. Объект передается командлету Stop-Process с помощью параметра InputObject. 

Последняя команда получает все процессы компьютера, которые работали ранее, но были остановлены. Для получения всех процессов на компьютере используется командлет Get-Process. Оператор конвейера (|) передает результаты командлету Where-Object, который выбирает из них те, у которых свойство HasExited имеет значение TRUE. HasExited — это только одно из множества свойств объектов процессов. Чтобы просмотреть все свойства, введите "get-process | get-member".






Пример 4

C:\PS>get-process 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 lsass  | stop-process <<<<

[ADMIN]: C:\PS> get-process 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]: C:\PS> get-process lsass | stop-process -force
[ADMIN]: C:\PS>

Описание
-----------
Приведенные команды демонстрируют использование параметра Force для остановки процесса, владельцем которого пользователь не является.

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

После запуска оболочки Windows PowerShell командой "Запуск от имени администратора" и повторения команды Windows PowerShell запрашивает подтверждение.

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






См. также