Есть ли ошибка в PowerShell в Start-Process
команде при доступе к StandardError
и StandardOutput
свойства?
Если я запускаю следующее, я не получаю вывода:
$process = Start-Process -FilePath ping -ArgumentList localhost -NoNewWindow -PassThru -Wait
$process.StandardOutput
$process.StandardError
Но если я перенаправлю вывод в файл, я получу ожидаемый результат:
$process = Start-Process -FilePath ping -ArgumentList localhost -NoNewWindow -PassThru -Wait -RedirectStandardOutput stdout.txt -RedirectStandardError stderr.txt
powershell
start-process
jzbruno
источник
источник
$process= ping localhost
# сохранит вывод в переменной процесса.Ответы:
Так почему-то
Start-Process
было задумано. Вот способ получить его без отправки в файл:источник
В коде, приведенном в вопросе, я думаю, что чтение свойства ExitCode переменной инициации должно работать.
Обратите внимание , что (как в вашем примере), необходимо добавить
-PassThru
и-Wait
параметры (это застало меня на некоторое время).источник
-NoNewWindow
с-Verb runAs
У меня также была эта проблема, и в итоге я использовал код Энди для создания функции для очистки, когда необходимо запустить несколько команд.
Он вернет коды stderr, stdout и exit как объекты. Одно замечание: функция не принимает
.\
путь; должны использоваться полные пути.Вот как им пользоваться:
источник
ВАЖНЫЙ:
Мы использовали функцию, предоставленную LPG выше .
Однако в нем содержится ошибка, с которой вы можете столкнуться при запуске процесса, генерирующего большой объем вывода. Из-за этого вы можете зайти в тупик при использовании этой функции. Вместо этого используйте адаптированную версию ниже:
Дополнительную информацию по этой проблеме можно найти на MSDN :
источник
У меня действительно были проблемы с примерами Энди Арисменди и LPG . Вы всегда должны использовать:
перед звонком
Полный пример:
источник
Вот моя версия функции, которая возвращает стандартный System.Diagnostics.Process с 3 новыми свойствами.
источник
Вот сложный способ получить вывод другого процесса PowerShell:
источник