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.
Here is a function you can try:
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
I believe you are making a mountain out of a molehill by using this code project. Asynchronous execution is very easy to do in C#.
PowerShell psCmd = PowerShell.Create().AddScript({Invoke-YourScriptAndReturnLastExitCode});
IAsyncResult result = psCmd.BeginInvoke();
// wait for finish
psCmd.EndInvoke(result);
Also, looking at your question on that project, it looks like you are trying to use TFS in PowerShell. You can consider the following additional pieces of information:
Hope this helps
You can write in your script code that will check the $lastexitcode and will throw an exception if the exitcode is not what you excepted.
Exceptions are easier to catch.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.