Wait-Process
Waits for the processes to be stopped before accepting more input.
Syntax
Name (Default)
Wait-Process
[-Name] <String[]>
[[-Timeout] <Int32>]
[<CommonParameters>]
Id
Wait-Process
[-Id] <Int32[]>
[[-Timeout] <Int32>]
[<CommonParameters>]
InputObject
Wait-Process
[[-Timeout] <Int32>]
-InputObject <Process[]>
[<CommonParameters>]
Description
The Wait-Process
cmdlet waits for one or more running processes to be stopped before accepting
input. In the PowerShell console, this cmdlet suppresses the command prompt until the processes are
stopped. You can specify a process by process name or process ID (PID), or pipe a process object to
Wait-Process
.
Wait-Process
works only on processes running on the local computer.
Examples
Example 1: Stop a process and wait
PS C:\> $nid = (Get-Process notepad).Id
PS C:\> Stop-Process -Id $nid
PS C:\> Wait-Process -Id $nid
This example stops the Notepad process and then waits for the process to be stopped before it continues with the next command.
The first command uses the Get-Process
cmdlet to get the ID of the Notepad process. It stores the
ID in the $nid
variable.
The second command uses the Stop-Process
cmdlet to stop the process with the ID stored in $nid
.
The third command uses Wait-Process
to wait until the Notepad process is stopped. It uses the
Id parameter of Wait-Process
to identify the process.
Example 2: Specifying a process
PS C:\> $p = Get-Process notepad
PS C:\> Wait-Process -Id $p.Id
PS C:\> Wait-Process -Name "notepad"
PS C:\> Wait-Process -InputObject $p
These commands show three different methods of specifying a process to Wait-Process
. The first
command gets the Notepad process and stores it in the $p
variable.
The second command uses the Id parameter, the third command uses the Name parameter, and the fourth command uses the InputObject parameter.
These commands have the same results and can be used interchangeably.
Example 3: Wait for processes for a specified time
PS C:\> Wait-Process -Name outlook, winword -Timeout 30
This command waits 30 seconds for the Outlook and Winword processes to stop. If both processes are not stopped, the cmdlet displays a non-terminating error and the command prompt.
Parameters
-Id
Specifies the process IDs of the processes. To specify multiple IDs, use commas to separate the IDs.
To find the PID of a process, type Get-Process
.
Parameter properties
Type: | Int32[] |
Default value: | None |
Supports wildcards: | False |
DontShow: | False |
Aliases: | PID, ProcessId |
Parameter sets
Id
Position: | 0 |
Mandatory: | True |
Value from pipeline: | False |
Value from pipeline by property name: | True |
Value from remaining arguments: | False |
-InputObject
Specifies the processes by submitting process objects. Enter a variable that contains the process
objects, or type a command or expression that gets the process objects, such as the Get-Process
cmdlet.
Parameter properties
Type: | Process[] |
Default value: | None |
Supports wildcards: | False |
DontShow: | False |
Parameter sets
InputObject
Position: | Named |
Mandatory: | True |
Value from pipeline: | True |
Value from pipeline by property name: | False |
Value from remaining arguments: | False |
-Name
Specifies the process names of the processes. To specify multiple names, use commas to separate the names. Wildcard characters are not supported.
Parameter properties
Type: | String[] |
Default value: | None |
Supports wildcards: | False |
DontShow: | False |
Aliases: | ProcessName |
Parameter sets
Name
Position: | 0 |
Mandatory: | True |
Value from pipeline: | False |
Value from pipeline by property name: | True |
Value from remaining arguments: | False |
-Timeout
Specifies the maximum time, in seconds, that this cmdlet waits for the specified processes to stop. When this interval expires, the command displays a non-terminating error that lists the processes that are still running, and ends the wait. By default, there is no time-out.
Parameter properties
Type: | Int32 |
Default value: | None |
Supports wildcards: | False |
DontShow: | False |
Aliases: | TimeoutSec |
Parameter sets
(All)
Position: | 1 |
Mandatory: | False |
Value from pipeline: | False |
Value from pipeline by property name: | False |
Value from remaining arguments: | False |
CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.
Inputs
Process
You can pipe a process object to this cmdlet.
Outputs
None
This cmdlet returns no output.
Notes
This cmdlet uses the WaitForExit method of the System.Diagnostics.Process class.
Unlike
Start-Process -Wait
,Wait-Process
only waits for the processes identified.Start-Process -Wait
waits for the process tree (the process and all its descendants) to exit before returning control.