Powershell ожидает запуска dotnet для запуска приложения на каком-либо порту - PullRequest
0 голосов
/ 14 мая 2019

Я пишу скрипт, который должен запускать два приложения dotnet одно за другим.Один на порту 5000, второй на порту 5001 в соответствии с их launchSettings.json

Пока что это скрипт, который запускает приложения:

    $app1ProjectFolder = '../src/App1'
    $app2ProjectFolder = '../src/App2'

    Write-Host "STARTING APP1" -foreground Green

    Push-Location $app1ProjectFolder 

    $dotnetRunCommandApp1 = 'run'
    $app1Process = Start-Process dotnet -ArgumentList $dotnetRunCommandApp1 -PassThru

    Pop-Location

    Write-Host "STARTING APP2" -foreground Green

    Push-Location $app2ProjectFolder 

    $dotnetRunCommandApp2 = 'run'
    $app2Process = Start-Process dotnet -ArgumentList $dotnetRunCommandApp2 -PassThru

    Pop-Location

Мне нужно, чтобы скриптдождитесь завершения запуска первого приложения или доступа к назначенному порту, прежде чем запускать второе приложение.

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Вы можете использовать:

while (!(Test-NetConnection localhost -Port 5000).TcpTestSucceeded) { Start-Sleep 1 }

Чтобы неопределенно долго ждать готовности портов.

Вы можете добавить максимальное время ожидания, например, сказать, что приложение продолжало работать, но не слушало,или был огненный.

0 голосов
/ 14 мая 2019

Start-Process имеет ключ -wait, который должен препятствовать продолжению скрипта до его завершения.

$app1Process = Start-Process dotnet -ArgumentList $dotnetRunCommandApp1 -PassThru -wait

Согласно статье Start-Process :

Указывает, что этот командлет ожидает завершения указанного процесса и его потомков, прежде чем принимать дополнительные входные данные.Этот параметр подавляет командную строку или сохраняет окно до завершения процессов.

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