How do I get PowerShell to wait until the Invoke-Item call has finished? I'm invoking a non-executable item, so I need to use Invoke-Item to open it.
+1
A:
Unfortunately you can't by using the Invoke-Item
Commandlet directly. This command let has a void return type and no options that allow for a wait.
The best option available is to define your own function which wraps the Process
API like so
function Invoke-Command() {
param ( [string]$program = $(throw "Please specify a program" ),
[string]$argumentString = "",
[switch]$waitForExit )
$psi = new-object "Diagnostics.ProcessStartInfo"
$psi.FileName = $program
$psi.Arguments = $argumentString
$proc = [Diagnostics.Process]::Start($psi)
if ( $waitForExit ) {
$proc.WaitForExit();
}
}
JaredPar
2010-04-23 17:31:42
+2
A:
Just use Start-Process -wait
, for example Start-Process -wait c:\image.jpg
. That should work in the same way as the one by Jared.
stej
2010-04-23 18:14:28
Shay, good trick ;)
stej
2010-05-17 21:57:27