1

我有一个 PowerShell 脚本,无论出于何种原因,无论是崩溃、自动退出还是系统重启后,它都需要重新启动...

我怎样才能从 bat 或其他 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)
4

1 回答 1

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..
}
于 2012-07-31T13:21:46.320 回答