Как сказать PowerShell дождаться окончания каждой команды до начала следующего?


Answers

Помимо использования Start-Process -Wait , вывод на выходе исполняемого файла заставит PowerShell ждать. В зависимости от необходимости я, как правило, подключаюсь к Out-Null , Out-Default , Out-String или Out-String -Stream . Here длинный список некоторых других вариантов вывода.

# Saving output as a string to a variable.
$output = ping.exe example.com | Out-String

# Filtering the output.
ping stackoverflow.com | where { $_ -match '^reply' }

# Using Start-Process affords the most control.
Start-Process -Wait SomeExecutable.com

Я пропустил операторы стиля CMD / Bash, на которые вы ссылались (&, &&, ||). Кажется, мы должны быть более подробными с Powershell .

Question

У меня есть сценарий PowerShell 1.0, чтобы просто открыть кучу приложений. Первая - это виртуальная машина, а другие - приложения для разработки. Я хочу, чтобы виртуальная машина завершила загрузку до открытия остальных приложений.

В bash я могу просто сказать "cmd1 && cmd2"

Это то, что у меня есть ...

C:\Applications\VirtualBox\vboxmanage startvm superdooper
    &"C:\Applications\NetBeans 6.5\bin\netbeans.exe"



Если вы используете Start-Process <path to exe> -NoNewWindow -Wait

Вы также можете использовать опцию -PassThru для вывода эха.




Включение опции -NoNewWindow дает мне сообщение об ошибке: Start-Process : This command cannot be executed due to the error: Access is denied.

Единственный способ заставить его работать - это позвонить:

Start-Process <path to exe> -Wait





Links



Tags

powershell