Waiting for Process Launch

by Nov 16, 2015

PowerShell has a built-in support to wait until a process or many processes end: simply use Wait-Process.

There is no support to do the opposite: wait until a process has started. Here is a function that can wait for any process:

#requires -Version 1
function Wait-ForProcess
        $Name = 'notepad',


    if ($IgnoreAlreadyRunningProcesses)
        $NumberOfProcesses = (Get-Process -Name $Name -ErrorAction SilentlyContinue).Count
        $NumberOfProcesses = 0

    Write-Host "Waiting for $Name" -NoNewline
    while ( (Get-Process -Name $Name -ErrorAction SilentlyContinue).Count -eq $NumberOfProcesses )
        Write-Host '.' -NoNewline
        Start-Sleep -Milliseconds 400

    Write-Host ''

So when you run this line, PowerShell will pause until you launch a new instance of Notepad:

Wait-ForProcess -Name notepad -IgnoreAlreadyRunningProcesses

When you omit -IgnoreAlreadyRunningProcesses, then PowerShell would continue immediately if there was at least one instance of Notepad already running.

Twitter This Tip! ReTweet this Tip!