Freigeben über


Wait-Process

Wartet, bis die Prozesse beendet wurden, bevor weitere Eingaben angenommen werden.

Syntax

Wait-Process
    [-Name] <String[]>
    [[-Timeout] <Int32>]
    [-Any]
    [-PassThru]
    [<CommonParameters>]
Wait-Process
    [-Id] <Int32[]>
    [[-Timeout] <Int32>]
    [-Any]
    [-PassThru]
    [<CommonParameters>]
Wait-Process
    [[-Timeout] <Int32>]
    [-Any]
    [-PassThru]
    -InputObject <Process[]>
    [<CommonParameters>]

Beschreibung

Dieses Cmdlet funktioniert unter Linux oder macOS nicht.

Das Wait-Process Cmdlet wartet auf das Beenden eines oder mehrerer ausgeführter Prozesse, bevor die Eingabe akzeptiert wird. In der PowerShell-Konsole unterdrückt dieses Cmdlet die Eingabeaufforderung, bis die Prozesse beendet werden. Sie können einen Prozess durch Prozessname oder Prozess-ID (PID) angeben oder ein Prozessobjekt an Wait-Processdas Objekt weiterzuleitungen.

Wait-Process funktioniert nur bei Prozessen, die auf dem lokalen Computer ausgeführt werden.

Beispiele

Beispiel 1: Beenden eines Prozesses und Warten

In diesem Beispiel wird der Editor-Prozess beendet und wartet dann, bis der Prozess beendet wird, bevor er mit dem nächsten Befehl fortgesetzt wird.

$nid = (Get-Process notepad).id
Stop-Process -Id $nid
Wait-Process -Id $nid

Das Get-Process Cmdlet ruft die Prozess-ID des Editor-Prozesses ab und speichert sie in der $nid Variablen. Stop-Process beendet den Prozess mit der in $nid. Wait-Process wartet, bis der Editorprozess beendet wird.

Beispiel 2: Angeben eines Prozesses

Dieses Beispiel zeigt drei verschiedene Methoden zum Angeben eines Prozesses für Wait-Process. Der erste Befehl ruft den Editorprozess ab und speichert ihn in der $p Variablen. Der zweite Befehl verwendet den Parameter "ID ", der dritte Befehl verwendet den Parameter "Name ", und der vierte Befehl verwendet den InputObject-Parameter .

$p = Get-Process notepad
Wait-Process -Id $p.id
Wait-Process -Name "notepad"
Wait-Process -InputObject $p

Die Ergebnisse dieser Befehle sind identisch und austauschbar.

Beispiel 3: Warten auf Prozesse für eine bestimmte Zeit

In diesem Beispiel wartet 30 Sekunden, Wait-Process bis die Outlook - und Winword-Prozesse beendet werden. Wenn beide Prozesse nicht beendet werden, zeigt das Cmdlet einen Fehler ohne Abbruch sowie die Eingabeaufforderung an.

Wait-Process -Name outlook, winword -Timeout 30

Parameter

-Any

Wenn mehrere Prozesse übergeben Wait-Processwerden, wartet das Cmdlet, bis alle Prozesse beendet werden, bevor sie zurückgegeben werden. Mit diesem Parameter gibt das Cmdlet zurück, wenn eines der Prozesse beendet wird. Die verbleibenden Prozesse werden weiterhin ausgeführt.

Dieser Parameter wurde in PowerShell 7.4 hinzugefügt.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Id

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

Typ:Int32[]
Aliase:PID, ProcessId
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-InputObject

Gibt die Prozesse durch Senden von Prozessobjekten an. Geben Sie eine Variable ein, die die Prozessobjekte enthält, oder geben Sie einen Befehl oder Ausdruck ein, der die Prozessobjekte abruft, z. B. das Get-Process Cmdlet.

Typ:Process[]
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-Name

Gibt die Prozessnamen der Prozesse an. Wenn Sie mehrere Namen angeben, trennen Sie diese durch Kommas. Platzhalterzeichen werden nicht unterstützt.

Typ:String[]
Aliase:ProcessName
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-PassThru

Standardmäßig gibt dieses Cmdlet nichts aus. Mit diesem Parameter gibt das Cmdlet Objekte zurück, die die Prozesse darstellen, die gewartet wurden.

Dieser Parameter wurde in PowerShell 7.4 hinzugefügt.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Timeout

Gibt die maximale Zeit in Sekunden an, die dieses Cmdlet auf das Beenden der angegebenen Prozesse wartet. Wenn dieses Intervall abläuft, zeigt der Befehl einen Fehler ohne Abbruch an, bei dem die noch ausgeführten Prozesse aufgeführt werden, und beendet den Wartevorgang. Standardmäßig ist kein Timeout vorhanden.

Typ:Int32
Aliase:TimeoutSec
Position:1
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

Process

Sie können ein Prozessobjekt an dieses Cmdlet weiterleiten.

Ausgaben

None

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

Process

Das Cmdlet gibt Prozessobjekte zurück, wenn Sie den PassThru-Parameter verwenden.

Hinweise

  • Dieses Cmdlet verwendet die WaitForExit-Methode der System.Diagnostics.Process-Klasse .

  • Im Gegensatz dazu Start-Process -WaitWait-Process wartet nur auf die identifizierten Prozesse. Start-Process -Wait wartet, bis die Prozessstruktur (der Prozess und alle untergeordneten Elemente) vor dem Zurückgeben des Steuerelements beendet werden.