Using legacy executables

This post is coming after a discussion on twitter about how to submit arguments ton an .exe files after a tips on powershell.com.

I’m not agree at all with this technic, this is not a “powershell” way to do things. All the time i say that there are many ways to script and bypass a problem, and of course this one is a solution but other options exist, and theyr are way far better !

As we had see, it’s possible to call directly the exe. You can also do the following:

This is also (i admit) a badway to reach our goal, but this is an option…

Another option with an .NET interesting approach.

This method bring the Waitforexit method, which is very interesting as your script will stop the flow until the third party executable has finished is execution.

Another possibility with Invoke-Expression:

It’ll execute the program with arguments and won’t release prompt until finished !

And, finally the best method ever to call an executable, PowerShell devs had done for us a perfect cmdlet : Start-process ! This cmdlet, by the way use the System.Diagnostics.Process class 😉

You can do for example this, which will execute the foo.exe with args, wait for the command to finish to release the prompt and prevent a new CMD window to be created. There are more options you can use, just don’t be shy and try “Get-Help Start-Process”

All for today.

 

Regards,

NB: More explanations about how it works behind the scene: http://huddledmasses.org/the-problem-with-calling-legacy-or-native-apps-from-powershell/

NB2: Another possibilities here: http://social.technet.microsoft.com/wiki/contents/articles/7703.powershell-running-executables.aspx