Powershell закрывается на выполнение exe - PullRequest
2 голосов
/ 20 марта 2019

Я пытаюсь запустить .exe в C: programfiles (x86), я могу запустить его прямо из пути к файлу.Если я запускаю в powershell просто закрывается.Нет отзывов.

Запуск powershell 5.1.17134 Rev 590

Запуск-процесс -FilePath "C: \ Program Files (x86) \ App \ App.exe"

Я попытался запустить powershell-Нет выхода, а затем запустить процесс, но он возвращается без обратной связи.

Если я запускаю его на том же компьютере в предварительном просмотре Powershell 6.1.0 - он работает нормально.Нет проблем.Как я могу отследить, что вызывает это 1) не запускать 2) закрыть PowerShell.Спасибо,

Ответы [ 2 ]

3 голосов
/ 20 марта 2019

Этот ответ имеет общее значение. Это не решит вашу проблему, если при использовании Start-Process действительно произойдет сбой вызывающего окна PowerShell.


Если C:\Program Files (x86)\App\App.exe является консольным приложением , которое вы хотите запустить в текущем окне консоли , не используйте Start-Process для его вызова.

Вместо этого вызывает его напрямую .

Учитывая, что его путь содержит пробелы и специальные символы (( и )), вам необходимо:

  • процитировать

  • вызовите его с помощью &, оператор вызова PowerShell .

PS> & 'C:\Program Files (x86)\App\App.exe'

Примечание:

  • Использование & с командой, указанной в строке в кавычках и / или с помощью ссылки на переменную, является синтаксической необходимостью, учитывая, что PowerShell имеет два различных режима синтаксического анализа - см. about_Parsing .

Вызов консольного приложения напрямую:

  • обеспечивает его синхронное выполнение

    • То есть управление не возвращается вызывающей стороне до тех пор, пока приложение не завершится.
  • соединяет свои стандартные выходные потоки - stdout и stderr - с эквивалентными потоками PowerShell.

    • То есть, при необходимости, вы можете перехватывать или перенаправлять вывод успешных приложений и / или вывод ошибок.
1 голос
/ 20 марта 2019

У вас есть интерактивная оболочка.Вы порождаете этот новый процесс - тогда ваша оболочка закрывается?

Очевидно, что он завершает свой родительский процесс, и, очевидно, pwsh делает что-то другое.

Я не думаю, что это действительноВопрос PowerShell, это один из внутренних окон.Набор инструментов для использования - Sysinternals.Первое, что я попробую - и я сделаю это на cmd, powershell и pwsh, чтобы установить основу для сравнения, - это запустить Process Monitor с фильтром на пути вашего приложения.Что-то в его последних действиях может оказаться полезным.Process Explorer также может быть полезен.

Вы находитесь в корпоративной среде?На моей машине есть агенты, которые убивают процессы на основе эвристики.Это может делать подобные вещи.

Может быть обходной путь, основанный на том, как вы вызываете приложение;

  • попробуйте предложение mklement0
  • попробуйте вызвать через WMI;это не обеспечивает ваш процесс powershell как родительский процесс: Invoke-WmiMethod -Class win32_process -Name create -ArgumentList "PathToApp.exe"
  • попробуйте вызвать через cmd.exe, если вы ограничены тем, что находится на ваших целевых машинах

Я так думаюэто не по теме, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...