Sdílet prostřednictvím


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 Zastavit proces 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 procesu zastavit proces. zastavit proces 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. Pomocí parametru Name určuje procesy, 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 Potvrdit vás před zastavením procesu vyzve PowerShell k zobrazení výzvy. 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 příkazu Stop-Process nezobrazovat.

Příklad 3: Zastavení procesu a zjištění, že se zastavil

PS C:\> calc
PS C:\> $p = Get-Process -Name "calc"
PS C:\> Stop-Process -InputObject $p
PS C:\> Get-Process | Where-Object {$_.HasExited}

Tato řada příkazů spustí a zastaví proces Calc a pak zjistí procesy, které se zastavily.

První příkaz spustí instanci kalkulačky.

Druhý příkaz používá Get-Process získá objekt, který představuje proces Calc, a pak ho uloží do proměnné $p.

Třetí příkaz zastaví proces Calc. Používá InputObject parametr předat objekt 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 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, ve kterých je hodnota vlastnosti HasExited $True. HasExited je pouze jednou 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 C:\> 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 C:\> 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 C:\> Get-Process -Name "lsass" | Stop-Process -Force
[ADMIN]: PS C:\>

Tyto příkazy ukazují účinek použití Vynucení k zastavení procesu, který není vlastníkem uživatele.

První příkaz používá k získání procesu Lsass Get-Process. Operátor kanálu odešle proces zastavit proces zastavit. 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, vynutit potlačit výzvu. V důsledku toho se proces zastaví bez potvrzení.

Parametry

-Confirm

Před spuštěním rutiny vás vyzve 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í zastavit proces před zastavením jakéhokoli procesu, který není vlastníkem aktuálního uživatele, zobrazí výzvu k potvrzení.

Pokud chcete najít vlastníka procesu, použijte rutinu Get-WmiObject k získání objektu Win32_Process, který představuje proces, a pak použijte metodu GetOwner 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 KÓD 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

Ukazuje, co se stane, když se rutina spustí. Rutina se nespustí.

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

Process

Objekt procesu můžete do této rutiny převést.

Výstupy

None, System.Diagnostics.Process

Tato rutina vrátí objekt System.Diagnostics.Process, který představuje zastavený proces, pokud zadáte parametr PassThru. Jinak tato rutina negeneruje žádný výstup.

Poznámky

  • Můžete také odkazovat na Stop-Process pomocí předdefinovaných aliasů, ukončit a spps. Další informace najdete v tématu about_Aliases.

    Ve Windows PowerShellu můžete také použít vlastnosti a metody Win32_Process objektu WMI (Windows Management Instrumentation). Další informace naleznete v tématu Get-WmiObject a 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.