#powershell
#powershell
Вопрос:
Привет, эксперты по переполнению стека
В настоящее время я пытаюсь запустить exe-файл из сценария PowerShell и хотел бы сохранить код выхода в переменной.
При самостоятельном запуске из командной строки Windows синтаксис выглядит следующим образом:
C:MyProgrammycommand.exe --option1=value1 --option2=value2 --option3=value3
В Powershell я могу выполнить вышеуказанное с помощью оператора вызова:
$myExe="C:MyProgrammycommand.exe"
$options = @(
"--option1=value1"
"--option2=value2"
"--option3=value3"
)
amp; $myExe @options
но я не уверен, как назначить код выхода, возвращаемый exe-файлом, в переменную.
До сих пор это то, что я пробовал:
- Попробовал следующий синтаксис:
$myVariable | amp; $myExe @options
но переменной не присваивается значение
- Используется Tee-объект
amp; $myExe @options | Tee-Object $myVariable
но я получаю ошибку ParameterBindingValidationException
- Создал систему.Диагностика.Объект процесса
$ps = New-Object System.Diagnostics.Process
$ps.StartInfo.FileName = "C:MyProgrammycommand.exe"
$ps.StartInfo.Arguments = "--option1=value1 --option2=value2 --option3=value3"
$ps.StartInfo.RedirectStandardOutput = $True
$ps.StartInfo.UseShellExecute = $False
$ps.Start()
$ps.WaitForExit()
что позволяет мне получить код выхода, вызвав $ps.ExitCode, но exe работает некорректно.
Ошибок не возникает, но похоже, что параметры считываются неправильно.
Есть какие-либо рекомендации по тому, как этого можно достичь?
Комментарии:
1. $lastexitcode уже должен содержать его?
2. Что заставляет вас думать, что exe-файл запускается некорректно?
Ответ №1:
После завершения работы исполняемого файла PowerShell заполнит $LASTEXITCODE
переменную кодом выхода:
$myExe="C:MyProgrammycommand.exe"
$options = @(
"--option1=value1"
"--option2=value2"
"--option3=value3"
)
$outputFromExe = amp; $myExe @options
return [pscustomobject]@{
Program = $myExe
ExitCode = $LASTEXITCODE
Output = $outputFromExe
}