#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