У меня есть сценарий PowerShell 1.0, чтобы просто открыть кучу приложений. Первая - это виртуальная машина, а остальные - приложения для разработки. Я хочу завершить загрузку виртуальной машины до того, как откроются остальные приложения.
В баш я могу просто сказать "cmd1 && cmd2"
Это то, что у меня есть ...
C:\Applications\VirtualBox\vboxmanage startvm superdooper
&"C:\Applications\NetBeans 6.5\bin\netbeans.exe"
источник
| out-null
сделал только то, что мне было нужно. Пробовал использовать,Start-Job
но так как я передаю результаты функций в качестве параметров, у меня появился небольшой скитоид, поэтому я не мог использовать последнее предложение ...-ArgumentList
, разделите их запятыми, как-ArgumentList /D=test,/S
.Помимо использования
Start-Process -Wait
, передача вывода исполняемого файла заставит Powershell ждать. В зависимости от потребности, я буду обычно труба ,Out-Null
,Out-Default
,Out-String
илиOut-String -Stream
. Вот длинный список некоторых других вариантов вывода.Я скучаю по операторам в стиле CMD / Bash, на которые вы ссылались (&, &&, ||). Кажется, мы должны быть более многословны с Powershell .
источник
Out-String
Start-Process
Просто используйте «Wait-process»:
работа сделана
источник
Если вы используете
Start-Process <path to exe> -NoNewWindow -Wait
Вы также можете использовать
-PassThru
опцию для вывода на экран.источник
-PassThru
он не отображает вывод (не консольное приложение по определению не выдаст консольный вывод), он выводитSystem.Diagnostics.Process
экземпляр, который представляет только что запущенный процесс, поэтому вы можете проверить его свойства и дождаться его выхода позже.Некоторые программы не могут обработать поток вывода очень хорошо, используя pipe, чтобы
Out-Null
не блокировать его.И
Start-Process
нужен-ArgumentList
переключатель для передачи аргументов, не так удобно.Есть и другой подход.
источник
Включение опции
-NoNewWindow
дает мне ошибку:Start-Process : This command cannot be executed due to the error: Access is denied.
Единственный способ заставить его работать - позвонить:
источник
Принимая это дальше, вы можете даже разобрать на лету
например
источник
Там всегда CMD. Это может быть менее раздражающим, если у вас есть проблемы с цитированием аргументов для start-process:
источник