Freigeben über


Stop-Process

Beendet ausgeführte Prozesse.

Syntax

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>]

Beschreibung

Das Stop-Process Cmdlet beendet einen oder mehrere ausgeführte Prozesse. Sie können einen Prozess anhand des Prozessnamens oder der Prozess-ID (PID) angeben oder ein Prozessobjekt an Stop-Processübergeben. Stop-Process funktioniert nur für Prozesse, die auf dem lokalen Computer ausgeführt werden.

Unter Windows Vista und höheren Versionen des Windows-Betriebssystems müssen Sie PowerShell mithilfe der Option Als Administrator ausführen starten, um einen Prozess zu beenden, der nicht dem aktuellen Benutzer gehört. Außerdem werden Sie nicht zur Bestätigung aufgefordert, es sei denn, Sie geben den Parameter Confirm an.

Beispiele

Beispiel 1: Beenden aller Instanzen eines Prozesses

PS C:\> Stop-Process -Name "notepad"

Mit diesem Befehl werden alle Instanzen des Notepad-Prozesses (Editor) auf dem Computer beendet. Jede instance von Editor wird in einem eigenen Prozess ausgeführt. Sie verwendet den Parameter Name , um die Prozesse anzugeben, die alle denselben Namen haben. Wenn Sie den Id-Parameter verwenden würden, um dieselben Prozesse zu beenden, müssten Sie die Prozess-IDs jeder instance von Editor auflisten.

Beispiel 2: Beenden eines bestimmten instance eines Prozesses

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

Mit diesem Befehl wird eine bestimmte Instanz des Notepad-Prozesses beendet. Der Prozess wird mit der Prozess-ID 3952 angegeben. Der Confirm-Parameter weist PowerShell an, Sie zu fragen, bevor der Prozess beendet wird. Da die Eingabeaufforderung zusätzlich zur ID den Prozessnamen enthält, empfiehlt sich dies. Der PassThru-Parameter übergibt das Prozessobjekt zur Anzeige an den Formatierer. Ohne diesen Parameter wird nach einem Stop-Process Befehl keine Anzeige angezeigt.

Beispiel 3: Beenden eines Prozesses und Erkennen, dass er beendet wurde

calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}

Diese Reihe von Befehlen startet und beendet den Calc Prozess und erkennt dann Prozesse, die beendet wurden.

Mit dem ersten Befehl wird eine instance des Rechners gestartet.

Der zweite Befehl ruft Get-Process ein -Objekt ab, das den Calc Prozess darstellt, und speichert es dann in der $p Variablen.

Der dritte Befehl beendet den Calc Prozess. Es verwendet den InputObject-Parameter , um das -Objekt an zu Stop-Processübergeben.

Mit dem letzten Befehl werden alle zuvor auf dem Computer ausgeführten Prozesse abgerufen, die nun beendet sind. Es wird verwendet Get-Process , um alle Prozesse auf dem Computer abzurufen. Der Pipelineoperator (|) übergibt die Ergebnisse an das Where-Object Cmdlet, das diejenigen auswählt, bei denen der Wert der HasExited-Eigenschaft $True ist. HasExited ist nur eine Eigenschaft von Prozessobjekten. Geben Sie ein, Get-Process | Get-Memberum alle Eigenschaften zu finden.

Beispiel 4: Beenden eines Prozesses, der nicht dem aktuellen Benutzer gehört

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>

Diese Befehle zeigen die Auswirkungen der Verwendung von Force zum Beenden eines Prozesses, der nicht im Besitz des Benutzers ist.

Der erste Befehl verwendet Get-Process , um den Lsass-Prozess abzurufen. Ein Pipelineoperator sendet den Prozess an, um Stop-Process ihn zu beenden. Wie in der Beispielausgabe gezeigt, schlägt der erste Befehl mit einer Access verweigert-Nachricht fehl, da dieser Prozess nur von einem Mitglied der Administratorgruppe auf dem Computer beendet werden kann.

Wenn PowerShell mithilfe der Option Als Administrator ausführen geöffnet wird und der Befehl wiederholt wird, werden Sie von PowerShell zur Bestätigung aufgefordert.

Der zweite Befehl gibt erzwingen an, um die Eingabeaufforderung zu unterdrücken. Der Prozess wird daher ohne Bestätigung beendet.

Parameter

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Beendet die angegebenen Prozesse, ohne zum Bestätigen aufzufordern. Standardmäßig werden vor dem Beenden eines Prozesses, Stop-Process der nicht im Besitz des aktuellen Benutzers ist, zur Bestätigung aufgefordert.

Um den Besitzer eines Prozesses zu finden, verwenden Sie das Get-CimInstance Cmdlet, um ein Win32_Process-Objekt abzurufen, das den Prozess darstellt, und verwenden Sie dann die GetOwner-Methode des -Objekts.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Gibt die Prozess-IDs der zu beendenden Prozesse an. Wenn Sie mehrere IDs angeben, trennen Sie diese durch Kommas. Um die PID eines Prozesses zu suchen, geben Sie ein Get-Process.

Type:Int32[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InputObject

Gibt die zu beendenden Prozessobjekte an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, mit dem die Objekte abgerufen werden.

Type:Process[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

Gibt die Prozessnamen der zu beendenden Prozesse an. Sie können mehrere Prozessnamen eingeben, durch Kommas getrennt oder Mitplatzzeichen verwenden.

Type:String[]
Aliases:ProcessName
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-PassThru

Gibt ein -Objekt zurück, das den Prozess darstellt. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

Process

Sie können ein Prozessobjekt an dieses Cmdlet weiterleiten.

Ausgaben

None

Standardmäßig gibt dieses Cmdlet keine Ausgabe zurück.

Process

Wenn Sie den PassThru-Parameter verwenden, gibt dieses Cmdlet ein Process-Objekt zurück, das den beendeten Prozess darstellt.

Hinweise

PowerShell enthält die folgenden Aliase für Stop-Process:

  • Alle Plattformen:
    • spps
  • Windows:
    • kill

Sie können auch die Eigenschaften und Methoden der Windows-Verwaltungsinstrumentation (WMI) Win32_Process -Objekts in Windows PowerShell verwenden. Weitere Informationen finden Sie unter Get-CimInstance und im WMI SDK.

  • Beachten Sie beim Beenden von Prozessen, dass das Beenden eines Prozesses Prozesse und Dienste beenden kann, die vom Prozess abhängen. Im Extremfall kann durch Beenden eines Prozesses sogar Windows beendet werden.