如何在启动web服务器后继续执行Powershell脚本?

如何在启动web服务器后继续执行Powershell脚本?,powershell,Powershell,我有一个脚本,它调用另外两个脚本 脚本0.ps1 第一个脚本启动web服务器: 脚本1.ps1 第二个脚本启动ngrok服务: 脚本2.ps1 问题是script0.ps1只执行script1.ps1。此时,web服务器开始在控制台中运行,因此不会执行script0.ps1的第二个命令 如何编写脚本以执行这两个命令?或者,如何只编写一个脚本来执行除两个独立控制台之外的所有命令 最终结果应该是: 1) 在控制台中运行并激活anaconda环境的web服务器 2) 使用激活的anaconda环境在控

我有一个脚本,它调用另外两个脚本

脚本0.ps1

第一个脚本启动web服务器:

脚本1.ps1

第二个脚本启动ngrok服务:

脚本2.ps1

问题是
script0.ps1
只执行
script1.ps1
。此时,web服务器开始在控制台中运行,因此不会执行
script0.ps1
的第二个命令

如何编写脚本以执行这两个命令?或者,如何只编写一个脚本来执行除两个独立控制台之外的所有命令

最终结果应该是: 1) 在控制台中运行并激活anaconda环境的web服务器
2) 使用激活的anaconda环境在控制台中运行的ngrok服务更改Script1.ps1以将python作为作业启动:

./activate anaconda_env     
 cd C:\webserver
 Invoke-Command -ScriptBlock {.\python.exe api_server.py} -AsJob -ComputerName .

我没有您正在使用的特定脚本,所以我用3.43附带的turtle.py测试了这个脚本,它似乎可以工作。

更改Script1.ps1以将python作为作业启动:

./activate anaconda_env     
 cd C:\webserver
 Invoke-Command -ScriptBlock {.\python.exe api_server.py} -AsJob -ComputerName .

我没有您正在使用的特定脚本,因此我使用3.43附带的turtle.py测试了这个脚本,它似乎可以工作。

您不需要使用Invoke Expression从另一个脚本运行Powershell脚本。就像在命令行上一样运行它

c:\script1.ps1
c:\script2.ps1
现在,如果script1.ps1启动一个不退出的进程,它将停止脚本中下一条语句的执行,从而也会阻止第二个脚本运行。 在大多数情况下,这种顺序执行正是您想要的

在您的情况下,您可以使用start Process异步启动脚本。 因此,您的主脚本类似于:

start-process c:\script1.ps1
start-process c:\script2.ps1

基本上启动一个新的命令shell来运行该语句。查看文档了解更多信息。您可以使用一系列参数来调整这种情况的发生方式。

您不需要使用Invoke Expression从另一个脚本运行Powershell脚本。就像在命令行上一样运行它

c:\script1.ps1
c:\script2.ps1
现在,如果script1.ps1启动一个不退出的进程,它将停止脚本中下一条语句的执行,从而也会阻止第二个脚本运行。 在大多数情况下,这种顺序执行正是您想要的

在您的情况下,您可以使用start Process异步启动脚本。 因此,您的主脚本类似于:

start-process c:\script1.ps1
start-process c:\script2.ps1

基本上启动一个新的命令shell来运行该语句。查看文档了解更多信息。您可以使用一组参数来调整这种情况的发生方式。

要使调用表达式不关闭脚本,您可以将输出管道输出为Null。上面的代码如下所示:

Invoke-Expression C:\script1.ps1 | Out-Null
Invoke-Expression C:\script2.ps1 | Out-Null

要使调用表达式不关闭脚本,可以通过管道将输出设置为Out Null。上面的代码如下所示:

Invoke-Expression C:\script1.ps1 | Out-Null
Invoke-Expression C:\script2.ps1 | Out-Null

到目前为止你试过什么?你不能简单地在脚本中有两个函数,然后执行它们,或者执行一个触发另外两个函数的主函数吗?到目前为止你尝试了什么?您是否可以在脚本中简单地包含两个函数,然后执行它们,或者执行触发其他两个函数的主函数?在执行过程中,我可以看到为script1.ps1安排了一个作业,并执行了script2.ps1。但是,问题在于第一个script1.ps1。没有运行服务器(我需要调试)的控制台,而且服务器似乎没有运行。无法向服务器发送请求。我还尝试单独运行scrip1.ps1,控制台也不会持久化。顺便说一句,我正在运行Battle webserver。在执行期间,我可以看到为script1.ps1安排了一个作业,并执行了script2.ps1。但是,问题在于第一个script1.ps1。没有运行服务器(我需要调试)的控制台,而且服务器似乎没有运行。无法向服务器发送请求。我还尝试单独运行scrip1.ps1,控制台也不会持久化。顺便说一句,我正在运行瓶子Web服务器。