Я пытаюсь использовать задание powershell, чтобы проверить, не сбилось ли недавно приложение, и перезапустить его, если оно упало. Скрипт, выполняющий проверку и перезапуск приложения, работает правильно при запуске отдельно. Но скрипт задания не выполняет его.
Скрипт проверки и перезапуска (CheckAndRestart.ps1):
$isProcessRunning = Get-Process "AppMain" -ErrorAction SilentlyContinue
if (!$isProcessRunning) {
$events = Get-WinEvent -FilterHashtable @{LogName='application';
starttime=([datetime]::Now.AddMinutes(-120));
endtime=([datetime]::Now);
} |Where-Object -Property Message -Like '*AppMain*'
if ($events) {
Start-Process -FilePath "shell:appsFolder\AppMain_9889wea!App"
}
}
Скрипт для создания задания:
$path = 'E:\Projects\AppMain\AppMainScript\CheckAndRestart.ps1'
$taskName = "AppMainScript"
$taskExists = Get-ScheduledJob | Where-Object {$_.Name -like $taskName }
if($taskExists) {
Unregister-ScheduledJob -Name $taskName -Confirm:$false
}
$trigger_atlogon = New-JobTrigger -AtLogOn
$trigger_repetition = New-JobTrigger -Once -At 11:40 -RepetitionInterval (New-TimeSpan -Minutes 1) -RepeatIndefinitely
Register-ScheduledJob -Name $taskName -Trigger @($trigger_atlogon,$trigger_repetition) -FilePath $path
Есть идеи, почему в задании не выполняется сценарий?
ОБНОВЛЕНИЕ
Я объединил два сценария в один. И приложение появилось в диспетчере задач, но GUI приложения не было видно. Иногда это показывало бы GUI, но большую часть времени идентификатор не показывал. Я думаю, что есть некоторые ограничения или другие детали, о которых я не знаю.
К сожалению, у меня нет времени для дальнейшего изучения этой ситуации из-за нехватки времени. Я создал приложение WinForms, которое делает то, что должен иметь скрипт.