2016-12-16 73 views
0

我们有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尾巴。

回答

0

让我给你出发的逻辑。

首先,你运行你somescript.ps1和内部的调用tail.ps1的工作。

start-job -filepath c:\scripts\tail.ps1 

现在你可以通过停止作业根据你所提到的(例如,该服务已停止),一定条件下停止,工作

然后,你可以通过使用接收在职接收作业的输出,甚至你可以等待作业使用等待工作

根据你的条件完全可以使用做 - 虽然,你可以接受这份工作,或者你可以根据你的要求停止工作。

因此最后,它只能控制返回到somescript.ps1

有关工作进一步参考请到通过链接或者您可以在这里提问。

下面的链接有截图完整的解释:

Dealing with PS Jobs

希望这个逻辑可以帮助你。

+0

谢谢,但我不想要一个并行(异步)进程,而是一个串行(同步)进程。只有当这个(tail.ps1)关闭时,主流程才会继续。 – Marc

+0

@Marc:那是什么,如果你正在等待工作完成使用等待工作,那么它不会是一个平行过程。所以你可以用它来达到你的目的。 –

+0

好吧,我明白,但我的主要脚本不能停止尾巴。用户必须决定并按下某个键来结束它(例如Ctrl + C取消它)。在我们的例子中,NT服务在实际的Java过程停止之前停止。 – Marc