Внешние команды, запускаемые сценариями powershell, выполняются синхронно или асинхронно как фоновые процессы? - PullRequest
0 голосов
/ 24 мая 2018

Если бы я должен был запустить внешнюю программу из сценария powershell, а затем запустить другой, ждал ли первый запуск программы перед завершением выполнения следующей команды?

Например:

 # Assume pagent loaded our key...
 & {
      & pscp -sftp "<some-path>\text*.json" nonroot@somehost:/home/nonroot/json ;
      Write-Output $LASTEXITCODE;
      & plink nonroot@somehost  "/bin/processJSON.sh /home/nonroot/json";
      Write-Output $LASTEXITCODE;
  }

1 Ответ

0 голосов
/ 26 мая 2018

В Windows PowerShell всегда будет синхронно ждать завершения консольного приложения.Для приложений Win32, если вывод команды не перенаправлен, то команда будет выполняться асинхронно.Если он перенаправлен, PowerShell будет ждать завершения команды.Например, запуск notepad из командной строки приведет к тому, что блокнот будет работать асинхронно с PowerShell, но если вы запустите notepad | out-null, то PowerShell будет ожидать выхода из процесса блокнота, прежде чем продолжить.В Linux или MacOS нет различий ОС между приложениями «windows» и «не-windows», поэтому PowerShell всегда ожидает завершения дочернего процесса.Таким образом, если приложение не переключается в фоновый режим (что делают многие инструменты с графическим интерфейсом), на этих платформах вы должны явно запускать процесс как фоновое задание, используя &, например, xedit &.

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