2012-07-31 52 views
1

我有需要時它死無論出於何種原因重新啓動PowerShell腳本PowerShell腳本,無論是碰撞,自退出或系統重新啓動後...如何保持全天候運行

我怎麼能,從蝙蝠或另一個PowerShell腳本,看到它,如果它沒有運行,它會重新開始...

即如何才能找出它是否已經從另一個腳本運行?

我知道我可以讓一個PowerShell腳本啓動一個活動的腳本,只需讓它循環一個新的開始,只要它不會退出一個特定的錯誤......但那麼腳本需要被看到:D所以我們回到原來的問題,我該如何保持腳本24/7全天候運行?

do 
{ 
    $date = Get-Date -format "yyyy-MM-ddTHH:mm:ss" 
    "$($date) Repeat : Restarting Worker, LastExitCode $($LastExitCode)." | Out-File D:\IDM\Worker\Worker.LOG -width 180 -append 
    powershell -File "D:\IDM\Scripts\Worker.ps1" 
    sleep 10 
} 
while ($LastExitCode -ne $null) 
+0

考慮PowerShell的工作流程。 – 2014-12-08 21:21:49

回答

4

我只是使用計劃任務。有很多選項可以幫助你做你想做的事。您可以運行該腳本每隔五分鐘,並讓它做足夠的循環佔用的是時間和退出:

$now = Get-Date 
while ($now.AddMinutes(5) -lt (Get-Date)){ 
    ...work... 
} 

或者你甚至可以把它每次寫一個標誌文件環路工程和有什麼新的工藝檢查該文件以查看它是否沒有活動。如果沒有任何活動:

$workFlag = Get-Item C:\work.flg 
$cutOff = (Get-Date).AddMinutes(-5) 
if ($workFlag.LastWriteTime -gt $cutOff){ 
    New-Item -force -path C:\work.flg 
    ...work loop.. 
} 
+0

計劃任務是我今天做的,但在那裏我遇到了一個小問題... 如果任務已經在運行,我不希望重複的任務工作在同一個文件,所以我勾選了「不開始,如果已經運行」框。 每次都會產生一個事件,沒有真正的麻煩,但非常煩人... 雖然我喜歡文件寫入的想法,因爲我保留一個日誌文件,它是一個很好的測試... – 2015-02-17 16:00:31