Greetings!
It is hard for me to say that Powershell isn't the end all, be all for automation. But, at times, the simplest solution is the best. In this case it was stopping and starting custom applications.
We have a server that needs to run two custom applications. We will call these App1 and App2. These applications have to be running in the foreground. The first script stopped the applications by using a .bat file that contained the following code:
TASKKILL /IM App1.exe /F
TASKKILL /IM App2.exe /F
The script to start the applications contained the following code:
START C:\app1.exe
START C:\app2.exe
We were using Task Scheduler to run the scripts every morning at 4:00am. When the tasks ran, the apps would stop but the apps wouldn't start in the foreground.
At first we thought we could create a Powershell script to get the applications to run in the foreground. Unfortunately, we had the same problem when we created a scheduled task to run the Powershell script.
As we were trying to figure out why this was happening, our boss, Amos, came into the room and asked if he could take a look at the scheduled task. After a minute he said, "I found the problem. You have to use Run only when user is logged on. This setting will start the applications in the foreground. Using Run whether user is logged on or not will force the applications to start in the background." We made the changes and the applications started correctly.
So, we learned that it is necessary to know how to use the tools that will run your scripts.
I hope you find this useful.
Mike