Останавливает один или несколько выполняющихся процессов.
Синтаксис
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 для отключения запроса. В результате процесс останавливается без подтверждения.
См. также