PDA

View Full Version : Stopping on batch file error


bdrc89
07-31-2014, 05:11 AM
Greetings, I am using the VBP to run batch files that triggers Powershell script remotely. However when the Powershell encounter errors, the VBP will continue execute the rest of the steps in the project. The error message from Powershell's console will appear in output window, but I would like VBP to treat it as error and stop running.
I have yet to find a workaround for this, please advice.

kinook
07-31-2014, 06:27 AM
Make sure that the batch file is exiting with a non-zero exit code when the PowerShell script fails, and use the Batch File action in Visual Build to call it, or include the call statement (i.e., %DOSCMD% call batchfile.bat) when running the batch file if calling directly (otherwise the exit code may not be returned to Visual Build).

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/exit.mspx?mfr=true

https://stackoverflow.com/questions/734598/how-do-i-make-a-batch-file-terminate-upon-encountering-an-error

https://stackoverflow.com/questions/4825746/cmd-exe-when-to-use-call-to-run-external-programs#4825773

http://www.kinook.com/Forum/showthread.php?t=260

bdrc89
08-01-2014, 05:15 AM
Thank you, would try out the remedy suggested. Much appreciated.

bdrc89
08-04-2014, 06:28 AM
Hi again, I have tried to add throw error in PowerShell, and batch file exits with error code greater than 0. However when I call the batch file through VBP, it will stuck at Building... process. Note that the batch file to be called is located in remote machine.

kinook
08-04-2014, 09:06 AM
It works in our tests. See the attached sample and log.

bdrc89
08-05-2014, 01:02 AM
I ran the same batch file and vbp from the attachment, but placing them in a different machine from where the VBP resides, and it is stucked at executing the step.

I have use the batch file command script "%DOSCMD% call psbatch.bat" or "cmd /c 'echo . | psbatch.bat'". I am using this approach as I need to pass various parameters back to batch file.

kinook
08-05-2014, 05:40 AM
I ran the same batch file and vbp from the attachment, but placing them in a different machine from where the VBP resides, and it is stucked at executing the step.
It works on a different remote machine in our tests.

bdrc89
08-05-2014, 10:17 PM
Could it be due to firewall setting? Remotely running the batch file works, but the exit code seems not able to catch, hence it stucks in execution state.

However when I tried to remotely execute the psbatch with command
"powershell -command" the VBP is able to show the error and shows program completed with exit code. But when adding "throw" into the batch file it will stuck in execution.

kinook
08-05-2014, 10:45 PM
I wouldn't think so. At first, you said that Visual Build continues as if no error occurred, but more recently you say that Visual Build "stucks in its execution state", so I'm not sure exactly what's going on. From the sound of it, I would guess that PsExec is never finishing and Visual Build is waiting for it. Which version of PsExec are you using? Which version of Visual Build? Which version+SP of Windows on local and remote? Any more details you can provide (see http://www.kinook.com/Forum/showthread.php?t=3044) might help. Thanks.

bdrc89
08-06-2014, 11:02 PM
I added start-process -PassThru in the batch file and get the ExitCode from Powershell, seems to be working in my test now.

Thanks for the assists along the way, much appreciated.