Powershell等待dotnet运行在某个端口上启动应用程序
我正在编写一个脚本,应该一个接一个地运行两个dotnet应用程序。根据launchSettings.json,一个在端口5000上,另一个在端口5001上 到目前为止,这是运行应用程序的脚本:Powershell等待dotnet运行在某个端口上启动应用程序,powershell,Powershell,我正在编写一个脚本,应该一个接一个地运行两个dotnet应用程序。根据launchSettings.json,一个在端口5000上,另一个在端口5001上 到目前为止,这是运行应用程序的脚本: $app1ProjectFolder = '../src/App1' $app2ProjectFolder = '../src/App2' Write-Host "STARTING APP1" -foreground Green Push-Location $app1P
$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运行过程将无法完成。。。我需要启动第一个应用程序并在启动第二个应用程序时保持运行啊,你说得对,我没有仔细阅读。这可能会让你永远等下去。