Freigeben über


Stop-Process

Beendet mindestens einen ausgeführten Prozess.

Syntax

Id (Standardwert)

Stop-Process
    [-Id] <Int32[]>
    [-PassThru]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Name

Stop-Process
    -Name <String[]>
    [-PassThru]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InputObject

Stop-Process
    [-InputObject] <Process[]>
    [-PassThru]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Beschreibung

Das Cmdlet Stop-Process beendet einen oder mehrere ausgeführte Prozesse. Sie können einen Prozess nach Prozessname oder Prozess-ID (PID) angeben oder ein Prozessobjekt an Stop-Processübergeben. Stop-Process funktioniert nur bei Prozessen, 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 "Bestätigen" an.

Beispiele

Beispiel 1: Beenden aller Instanzen eines Prozesses

Stop-Process -Name "notepad"

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

Beispiel 2: Beenden einer bestimmten Instanz eines Prozesses

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 Editorprozesses beendet. Sie verwendet die Prozess-ID 3952, um den Prozess zu identifizieren. Die Bestätigen, dass Parameter PowerShell anfordert, bevor der Prozess beendet wird. Da die Eingabeaufforderung zusätzlich zur ID den Prozessnamen enthält, ist dies bewährte Methode. Der PassThru Parameter übergibt das Prozessobjekt an den Formatierer für die Anzeige. Ohne diesen Parameter würde 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.

Der erste Befehl startet eine Instanz des Rechners.

Der zweite Befehl verwendet Get-Process ruft 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 parameter InputObject, um das Objekt an Stop-Processzu übergeben.

Der letzte Befehl ruft alle Prozesse auf dem Computer ab, die ausgeführt wurden, aber jetzt beendet werden. Es 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 Get-Process | Get-Memberein, um 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

Diese Befehle zeigen die Auswirkung der Verwendung von Erzwingen, um einen Prozess zu beenden, der nicht im Besitz des Benutzers ist.

Der erste Befehl verwendet Get-Process, um den Lsass-Prozess abzurufen. Ein Pipelineoperator sendet den Prozess an Stop-Process, um ihn zu beenden. Wie in der Beispielausgabe gezeigt, schlägt der erste Befehl mit einer Meldung "Zugriff verweigert" fehl, da dieser Vorgang 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 Force an, um die Eingabeaufforderung zu unterdrücken. Daher wird der Vorgang ohne Bestätigung beendet.

Parameter

-Confirm

Fordert Sie zur Bestätigung auf, bevor Sie das Cmdlet ausführen.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:vgl

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Force

Beendet die angegebenen Prozesse, ohne zur Bestätigung aufzufordern. Standardmäßig werden Stop-Process zur Bestätigung aufgefordert, bevor ein Prozess beendet wird, der nicht dem aktuellen Benutzer gehört.

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

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Id

Gibt die Prozess-IDs der zu beendenden Prozesse an. Um mehrere IDs anzugeben, verwenden Sie Kommas, um die IDs zu trennen. Geben Sie Get-Processein, um die PID eines Prozesses zu finden.

Parametereigenschaften

Typ:

Int32[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

Id
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-InputObject

Gibt die zu beendenden Prozessobjekte an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder Ausdruck ein, der die Objekte ermittelt.

Parametereigenschaften

Typ:

Process[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

InputObject
Position:0
Obligatorisch.:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Name

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

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False
Aliase:ProcessName

Parametersätze

Name
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-PassThru

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

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-WhatIf

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

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Wi

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

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
  • Fenster:
    • 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 WMI SDK.

  • Beachten Sie beim Beenden von Prozessen, dass das Beenden eines Prozesses Prozess und Dienste beenden kann, die vom Prozess abhängen. In einem extremen Fall kann das Beenden eines Prozesses Windows beenden.