我正在从powershell脚本中调用我的exe,如下所示。
$file = $PSScriptRoot + "\executor.exe"
$code = (Start-Process -WindowStyle Hidden $file -Verb runAs -ArgumentList $Logfile).StandardOutput.ToString;
$nid = (Get-Process "executor.exe").id
Wait-Process -Id $nid
if ($code -eq 1) {
LogWrite "Execution succeeded"
} else
{
LogWrite "Execution Failed"
}
我的exe程序中有一个int主函数,成功时将返回1,失败时将返回0。 当我尝试从powershell脚本获取ExitCode(使用$ LASTEXITCODE)时,它始终显示为null(既不为1也不为0),但是我的exe按预期返回1。 如何在Powershell脚本中捕获exe的返回值?
答案 0 :(得分:0)
您可以使用此:
$psi = New-Object System.Diagnostics.ProcessStartInfo
$psi.FileName = # path to your exe file
# additional options:
$psi.UseShellExecute = $false
$psi.CreateNoWindow = $false
$psi.WindowStyle = "Maximized"
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $psi
$p.Start() | Out-Null # returns $true if the process started, $false otherwise
$p.WaitForExit()
# here's the exitcode
$exitCode = $p.ExitCode
创建进程开始信息,以指定可执行路径和其他选项。使用.WaitForExit()
等到该过程完成很重要。
您尝试过的操作不会获得应用程序退出代码,但是会获得应用程序写入标准控制台的内容,对于您而言,我认为这没有任何意义。如果您可以修改exe以便将其写入控制台,那么您所做的就可以。