2016-12-16 106 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