Question:
I’ve got a scipt executing in C# using the powershell async execution code on code project here:
I need to return the $lastexitcode and Jean-Paul describes how you can use a custom pshost class to return it. I can’t find any method or property in pshost that returns the exit code.
This engine I have needs to ensure that script executes correctly.
Any help would be appreciated.
regards
Bob.
Its the $lastexitcode and the $? variables I need to bring back.
Hi,
Finally answered.
I found out about the $host variable. It implements a callback into the host, specifically a custom PSHost object, enabling you to return the $lastexitcode. Here is a link to an explanation of $host.
http://mshforfun.blogspot.com/2006/08/do-you-know-there-is-host-variable.html
It seems to be obscure, badly documented, as usual with powershell docs. Using point 4, calling $host.SetShouldExit(1) returns 1 to the SetShouldExit method of pshost, as described here.
Its really depends on defining your own exit code defintion. 0 and 1 suffixes I guess.
regards
Bob.
Answer:
Here is a function you can try:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function run-process ($cmd, $params) { $p = new-object System.Diagnostics.Process $p.StartInfo = new-object System.Diagnostics.ProcessStartInfo $exitcode = $false $p.StartInfo.FileName = $cmd $p.StartInfo.Arguments = $params $p.StartInfo.UseShellExecute = $shell $p.StartInfo.WindowStyle = 1; #hidden. Comment out this line to show output in separate console $null = $p.Start() $p.WaitForExit() $exitcode = $p.ExitCode $p.Dispose() return $exitcode } |
Hope that helps