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 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-Processprocesu . 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

Process

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.

Process

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.