Stop-Process
Zastaví jeden nebo více spuštěných procesů.
Syntaxe
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>]
Description
Rutina Stop-Process
zastaví jeden nebo více spuštěných procesů. Proces můžete zadat podle názvu procesu nebo ID procesu (PID) nebo předat objekt Stop-Process
procesu . Stop-Process
funguje pouze na procesech spuštěných v místním počítači.
V systému Windows Vista a novějších verzích operačního systému Windows je nutné zastavit proces, který není vlastníkem aktuálního uživatele, spuštěním PowerShellu pomocí možnosti Spustit jako správce. Kromě toho se nezobrazí výzva k potvrzení, pokud nezadáte parametr Confirm .
Příklady
Příklad 1: Zastavení všech instancí procesu
PS C:\> Stop-Process -Name "notepad"
Tento příkaz zastaví všechny instance procesu Poznámkového bloku v počítači. Každá instance Poznámkového bloku běží ve vlastním procesu. Používá parametr Name k určení procesů, z nichž všechny mají stejný název. Pokud byste k zastavení stejných procesů použili parametr ID , museli byste uvést ID procesů jednotlivých instancí Poznámkového bloku.
Příklad 2: Zastavení konkrétní instance procesu
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
Tento příkaz zastaví konkrétní instanci procesu Poznámkového bloku. K identifikaci procesu používá ID procesu 3952. Parametr Confirm vás před zastavením procesu vyzve k zobrazení výzvy PowerShellu. Vzhledem k tomu, že výzva obsahuje název procesu kromě ID, je to osvědčený postup.
Parametr PassThru předá objekt procesu do formátovače pro zobrazení. Bez tohoto parametru by se po Stop-Process
příkazu nezobrazovat.
Příklad 3: Zastavení procesu a zjištění, že se zastavil
calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}
Tato řada příkazů spustí a zastaví Calc
proces a pak rozpozná procesy, které se zastavily.
První příkaz spustí instanci kalkulačky.
Druhý příkaz použije Get-Process
objekt, který představuje Calc
proces, a pak ho $p
uloží do proměnné.
Třetí příkaz proces zastaví Calc
. Používá InputObject parametr předat objektu do Stop-Process
.
Poslední příkaz získá všechny procesy v počítači, které byly spuštěny, ale které jsou nyní zastaveny. Používá Get-Process
se k získání všech procesů v počítači. Operátor kanálu (|
) předá výsledky rutině Where-Object
, která vybere ty, kde je hodnota HasExited vlastnost $True. HasExited je pouze jedna vlastnost procesních objektů. Chcete-li najít všechny vlastnosti, zadejte Get-Process | Get-Member
.
Příklad 4: Zastavení procesu, který nepatří aktuálnímu uživateli
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>
Tyto příkazy ukazují účinek použití vynucení k zastavení procesu, který není vlastníkem uživatele.
První příkaz používá Get-Process
k získání procesu Lsass. Operátor kanálu odešle proces, aby Stop-Process
ho zastavil. Jak je znázorněno v ukázkovém výstupu, první příkaz selže se zprávou o odepření přístupu, protože tento proces může být zastaven pouze členem skupiny Správce v počítači.
Když se PowerShell otevře pomocí možnosti Spustit jako správce a příkaz se opakuje, PowerShell vás vyzve k potvrzení.
Druhý příkaz určuje vynucení potlačení výzvy. V důsledku toho se proces zastaví bez potvrzení.
Parametry
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Force
Zastaví zadané procesy bez výzvy k potvrzení. Ve výchozím nastavení se před zastavením jakéhokoli procesu, který není vlastníkem aktuálního uživatele, Stop-Process
zobrazí výzvu k potvrzení.
Pokud chcete najít vlastníka procesu, použijte rutinu Get-CimInstance
k získání Win32_Process objektu, který představuje proces, a pak použijte GetOwner metoda objektu.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Id
Určuje ID procesů, které se mají zastavit. Pokud chcete zadat více ID, oddělte ID čárkami. Chcete-li najít PID procesu, zadejte Get-Process
.
Typ: | Int32[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-InputObject
Určuje objekty procesu, které se mají zastavit. Zadejte proměnnou, která obsahuje objekty, nebo zadejte příkaz nebo výraz, který objekty získá.
Typ: | Process[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Name
Určuje názvy procesů, které se mají zastavit. Můžete zadat více názvů procesů oddělených čárkami nebo použít zástupné znaky.
Typ: | String[] |
Aliasy: | ProcessName |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-PassThru
Vrátí objekt, který představuje proces. Ve výchozím nastavení tato rutina negeneruje žádný výstup.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Objekt procesu můžete do této rutiny převést.
Výstupy
None
Ve výchozím nastavení tato rutina nevrací žádný výstup.
Pokud použijete parametr PassThru , vrátí tato rutina objekt Process představující zastavený proces.
Poznámky
Windows PowerShell obsahuje následující aliasy pro Stop-Process
:
kill
spps
Ve Windows PowerShellu můžete také použít vlastnosti a metody Win32_Process objektu WMI (Windows Management Instrumentation). Další informace najdete v sadě
Get-CimInstance
WMI SDK.Při zastavování procesů si uvědomte, že zastavení procesu může zastavit proces a služby, které závisí na procesu. V extrémním případě může zastavení procesu zastavit Systém Windows.