36
votes

I need to call an external application (i.e. & 'Notepad' ) and then get the process ID of the called application.

Get-Process Notepad = will return all Notepad processes

I want to do something like:

$objApp = & 'c:\Notepad.exe'

WHILE (get-process -ID $objApp.id | select -property Responding) {
  Start-Sleep -s 10
  Echo "STILL WAITING"
}
Echo "Done!!"
2

2 Answers

63
votes

Use Start-Process with the -PassThru argument like this:

$app = Start-Process notepad -passthru
Wait-Process $app.Id
9
votes

More succinct:

# Starts Notepad and returns the ID
(Start-Process Notepad -passthru).ID