Hello, Everyone.
I'm trying to figure out how I can use
PowerShell to trigger scripts and then report events (like "install
succeeded" or "failed" or "task completed" or "did not complete" or
"current percentage of completion") to a C# web application which is
triggering the scripts on remote machines.
Let me explain, I'm
an SDET in Seattle and I've just deployed a very nice batch and cmd
file driven lab teardown and deployment system which has really helped
cutdown the time it takes us to teardown our test environment and then
deploy a new build. Anyway, I wrote a C# web application to serve as a
master control for triggering all the teardown and deployment scripts
that we use and it works great, but I don't have any status reporting.
My C# web application can't tell when a remote process it triggered via
a script it launched completed successfully or not. Specifically, I'm
using a web application written in C# running on IIS7 to launch local
cmd files which use psexec.exe to call scripts on remote machines but
my C# application never gets notified what happened after the initial
scripts are launched.
For example, I click a button on my web
application and it launches a local script which, in turn, calls a
remote cmd script containing the following instructions:
"REM triggers all machines in ms_targets.txt to uninstall/teardown mymediaserver
psexec \\192.168.42.239 -i -d -n 5 -u wulf -p xxx C:\setups\master_teardowns\mymediaserver\master_mediaserver_teardown.cmd"
This
script (master_mediaserver_teardown.cmd) contains the following
instructions (quotations added for readability and are not in the
script):
"REM silently uninstalls mymediaserver using the app's product code
net stop mymediaserver
MsiExec.exe /uninstall {3FD3D21F-629F-4174-AF7B-29F4DA927B38} /quiet"
Now,
when this script is launched on a remote machine a DOS command-window
opens up on that machine and you can see what the progress of the
uninstall process is if you're sitting right there looking at its
monitor. But the C# web application which launched the script in the
first place knows nothing of the status/progress of this process as the
uninstallation is performed. And again, when the process completes, I
don't currently have a method of communicating back to the C# website
which launched the process, via script, that the process has completed.
I sure hope I'm making sense here...
Now,
I'm using installshield for all my install packages and psexec.exe,
triggered by my C# web application, is what is being used to launch
these installers. Can PowerShell be used in someway to create an object
which communicates events back to the C# web application? Or, perhaps,
is there something that I'm not doing correctly or am missing with my
windows scripting that would return status (not just error codes) to
the web application?
Ideally, I'd like to show status bars on
my C# web application which increment as the various remote
installations and or teardowns are underway as well as show when tasks
have completed and whether or not any errors occurred.
Any feedback would be most appreciated!
Thanks,
Wulf