I have this simple script:
$files = dir .\configs | ? { !$_.PSIsContainer }
foreach($file in $files)
{
try
{
.\MyApp.exe -ErrorAction Stop $file
}
catch
{
write-host "!!!!!!!!!!!!error!!!!!!!!!!!!!!"
continue
}
}
The problem is that when
.\MyApp.exe -ErrorAction Stop $file
crash, the windows message box about application crash appear and my script block, catch is not hit and only way to continue is click Storno button in the message box.
So how to prevent blocking?
Several notes apply here:
-ErrorAction
has no value. That applies only to functions/cmdlets (anything else?).$lastexitcode
that contains the exit code of the application.Note, that properly coded application should really return its exit code and may write something to console. If it fails horribly with that message box, there is no excuse. At least one big try/catch block in the Main function should be used.