Как получить возвращаемое значение приложения в PowerShell?

#powershell

#powershell

Вопрос:

Я передаю аргумент своему тестовому приложению через powershell. Я хочу получить возвращаемое значение приложения после его завершения.

Как я могу получить возвращаемое значение приложения вместо вывода на консоль.

Я запускаю приложение, выполнив

 Test.ps1 2
  

Test.ps1

 param ([string]$param1)
    
$path = "C:Workspacesmyapplication"
$executable = "Test.exe"
    
$filepath  = "$($path)$($executable) $($param1)"
    
Try 
{
    $Result = iex $filepath
        
    #this writes out the console output of Test.exe instead of the return value.
    Write-Host $Result  
    Write-Host $LASTEXITCODE  
}
Catch
{
    Write-Host "Exit Code"
    Write-Host $LASTEXITCODE    
}
  

Комментарии:

1. Что вы подразумеваете под «возвращаемым значением приложения»? Код выхода?

2. мое приложение возвращает целое число. в зависимости от выполняемого сценария. например, -1 для сбоя, или 4, или 5 в зависимости от методов, которые были выполнены.

3. Возвращает как? В коде выхода? Если да, попробуйте заменить Write-Host $Result на Write-Host $LASTEXITCODE .

4. Используйте amp; "${path}${executable}" "$input" вместо iex $filepath

5. Не используйте $input как самостоятельную переменную. Это автоматическая переменная в PowerShell. Выберите другое имя для этого параметра. Кроме того, у вас есть опечатка: Write-Hose —> Write-Host

Ответ №1:

вы должны использовать Start-Process :

 $p = Start-Process $($path)$($executable) -ArgumentList $input
$p.HasExited
$p.ExitCode