Add autostart watchdog task
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$ProjectDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$TaskName = "DocuTranslate"
|
||||
$WatchdogTaskName = "DocuTranslateWatchdog"
|
||||
$RunnerBat = Join-Path $ProjectDir "autostart_runner.bat"
|
||||
$WatchdogBat = Join-Path $ProjectDir "watchdog.bat"
|
||||
$LogDir = Join-Path $ProjectDir "logs"
|
||||
$LogFile = Join-Path $LogDir "autostart.log"
|
||||
|
||||
if (!(Test-Path -LiteralPath $RunnerBat)) {
|
||||
throw "Cannot find $RunnerBat"
|
||||
}
|
||||
|
||||
if (!(Test-Path -LiteralPath $WatchdogBat)) {
|
||||
throw "Cannot find $WatchdogBat"
|
||||
}
|
||||
|
||||
if (!(Test-Path -LiteralPath $LogDir)) {
|
||||
New-Item -ItemType Directory -Path $LogDir | Out-Null
|
||||
}
|
||||
|
||||
$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest
|
||||
$StartupAction = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c `"$RunnerBat`""
|
||||
$StartupTrigger = New-ScheduledTaskTrigger -AtStartup
|
||||
try {
|
||||
$StartupSettings = New-ScheduledTaskSettingsSet `
|
||||
-StartWhenAvailable `
|
||||
-MultipleInstances IgnoreNew `
|
||||
-RestartCount 3 `
|
||||
-RestartInterval (New-TimeSpan -Minutes 1)
|
||||
} catch {
|
||||
$StartupSettings = New-ScheduledTaskSettingsSet `
|
||||
-StartWhenAvailable `
|
||||
-MultipleInstances IgnoreNew
|
||||
}
|
||||
|
||||
Register-ScheduledTask `
|
||||
-TaskName $TaskName `
|
||||
-Action $StartupAction `
|
||||
-Trigger $StartupTrigger `
|
||||
-Principal $Principal `
|
||||
-Settings $StartupSettings `
|
||||
-Force | Out-Null
|
||||
|
||||
$WatchdogAction = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c `"$WatchdogBat`""
|
||||
$WatchdogTrigger = New-ScheduledTaskTrigger `
|
||||
-Once `
|
||||
-At (Get-Date).AddMinutes(1) `
|
||||
-RepetitionInterval (New-TimeSpan -Minutes 5) `
|
||||
-RepetitionDuration (New-TimeSpan -Days 3650)
|
||||
$WatchdogSettings = New-ScheduledTaskSettingsSet `
|
||||
-StartWhenAvailable `
|
||||
-MultipleInstances IgnoreNew
|
||||
|
||||
Register-ScheduledTask `
|
||||
-TaskName $WatchdogTaskName `
|
||||
-Action $WatchdogAction `
|
||||
-Trigger $WatchdogTrigger `
|
||||
-Principal $Principal `
|
||||
-Settings $WatchdogSettings `
|
||||
-Force | Out-Null
|
||||
|
||||
Write-Host "[OK] Scheduled task `"$TaskName`" has been created."
|
||||
Write-Host "[OK] Scheduled task `"$WatchdogTaskName`" has been created."
|
||||
Write-Host "[OK] Startup runner: `"$RunnerBat`""
|
||||
Write-Host "[OK] Watchdog: `"$WatchdogBat`""
|
||||
Write-Host "[OK] Log file: `"$LogFile`""
|
||||
Write-Host ""
|
||||
Write-Host "Verify:"
|
||||
Write-Host "schtasks /Query /TN `"$TaskName`" /V /FO LIST"
|
||||
Write-Host "schtasks /Query /TN `"$WatchdogTaskName`" /V /FO LIST"
|
||||
Write-Host ""
|
||||
Write-Host "Start now:"
|
||||
Write-Host "schtasks /Run /TN `"$TaskName`""
|
||||
Reference in New Issue
Block a user