如何让外部程序不暂停我的 PowerShell 脚本?

问题描述 投票:0回答:1

我使用下面的脚本并行运行两个程序(第 3 行和第 5 行;第 1 行 只是使文件打开 PowerShell,执行命令并再次关闭它)。不幸的是,脚本在第 3 行暂停,并且在我关闭第一个程序之前不会运行第二个程序。

文件

start.cmd

@PowerShell -ExecutionPolicy Bypass -Command Invoke-Expression $('$args=@(^&{$args} %*);'+[String]::Join(';',(Get-Content '%~f0') -notmatch '^^@PowerShell.*EOF$')) & goto :EOF
Set-Location -LiteralPath "D:\ngrok"
.\ngrok tcp --region=us --remote-addr=9.tcp.ngrok.io:22648 22
Set-Location -LiteralPath "C:\Users\apeal\OneDrive\Desktop\SSC"
Start-Process -FilePath "run.bat"

这是我运行代码的视频: https://youtu.be/1FBJTcBXWTM

如您所见,当我运行 CMD 文件时,tcp 门户会连接,但只有在我使用(cmd + c)退出控制台后,门户才会关闭并启动服务器。

如何使用我的脚本并行/异步运行这两个程序?

powershell automation scripting
1个回答
1
投票

.\ngrok tcp --region=us --remote-addr=9.tcp.ngrok.io:22648 22
这样的直接调用将使您的脚本等待直到该过程完成。
Start-Process
相反,默认情况下不会等待(不过您可以使用
-Wait
开关让它等待)。

要将参数传递给要使用

Start-Process
运行的可执行文件,您可以使用
-ArgumentList
参数。因此,只需将直接调用替换为:

Start-Process .\ngrok -ArgumentList "tcp --region=us --remote-addr=9.tcp.ngrok.io:22648 22"

你就可以开始了。

© www.soinside.com 2019 - 2024. All rights reserved.