从Powershell的启动PowerShell脚本,取消并返回到PowerShell的
问题描述:
我们有someScript.ps1
应该做一些东西,然后调用tail.ps1
(其尾部日志文件)。当用户在日志文件中看到某个事件(例如服务已停止)时,他们应该能够使用Ctrl + C取消tail.ps1
并返回到someScript.ps1
的流程。从Powershell的启动PowerShell脚本,取消并返回到PowerShell的
我想这是可能的使用Windows start
命令来调用一个.bat文件,它调用PowerShell脚本,但想知道是否有一种方法,只需从PS调用tail.ps1
而不需要.bat。
注意:使用& .\tail.ps1
根据需要不起作用。 Ctrl + C取消两个脚本,即someScript.ps1
。我们正在使用Get-Content -Wait
尾巴。
答
让我给你出发的逻辑。
首先,你运行你somescript.ps1和内部的调用tail.ps1的工作。
start-job -filepath c:\scripts\tail.ps1
现在你可以通过停止作业根据你所提到的(例如,该服务已停止),一定条件下停止,工作。
然后,你可以通过使用接收在职接收作业的输出,甚至你可以等待作业使用等待工作
根据你的条件完全可以使用做 - 虽然,你可以接受这份工作,或者你可以根据你的要求停止工作。
因此最后,它只能控制返回到somescript.ps1。
有关工作进一步参考请到通过链接或者您可以在这里提问。
下面的链接有截图完整的解释:
希望这个逻辑可以帮助你。
谢谢,但我不想要一个并行(异步)进程,而是一个串行(同步)进程。只有当这个(tail.ps1)关闭时,主流程才会继续。 – Marc
@Marc:那是什么,如果你正在等待工作完成使用等待工作,那么它不会是一个平行过程。所以你可以用它来达到你的目的。 –
好吧,我明白,但我的主要脚本不能停止尾巴。用户必须决定并按下某个键来结束它(例如Ctrl + C取消它)。在我们的例子中,NT服务在实际的Java过程停止之前停止。 – Marc