Powershell等待dotnet运行在某个端口上启动应用程序

Powershell等待dotnet运行在某个端口上启动应用程序,powershell,Powershell,我正在编写一个脚本,应该一个接一个地运行两个dotnet应用程序。根据launchSettings.json,一个在端口5000上,另一个在端口5001上 到目前为止,这是运行应用程序的脚本: $app1ProjectFolder = '../src/App1' $app2ProjectFolder = '../src/App2' Write-Host "STARTING APP1" -foreground Green Push-Location $app1P

我正在编写一个脚本,应该一个接一个地运行两个dotnet应用程序。根据launchSettings.json,一个在端口5000上,另一个在端口5001上

到目前为止,这是运行应用程序的脚本:

    $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

我需要的是脚本在启动第二个应用程序之前,等待第一个应用程序完成启动或在其指定端口上可访问。

启动进程具有-wait开关,该开关应防止脚本继续,直到它完成

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

根据报告:

指示此cmdlet在接受更多输入之前等待指定进程及其子进程完成。此参数将抑制命令提示或保留窗口,直到进程完成

您可以使用:

while (!(Test-NetConnection localhost -Port 5000).TcpTestSucceeded) { Start-Sleep 1 }
无限期地等待端口准备就绪


您可以添加最大等待时间,例如,假设应用程序保持运行但无法侦听,或者被防火墙拦截。

您可以使用
do{}while()
循环运行
netstat-an
,将其存储在变量中,然后分析计算机名称和端口的结果,以及已建立的状态。然后您的循环可以无限期运行,直到应用程序启动并运行,然后继续使用您的codecorrect me如果我错了。。。但在应用程序启动后,
dotnet运行过程将无法完成。。。我需要启动第一个应用程序并在启动第二个应用程序时保持运行啊,你说得对,我没有仔细阅读。这可能会让你永远等下去。