У меня есть скрипт Windows powershell
, который работает весь день каждый. Он запускается task manager
в 5 минут после полуночи каждое утро, работает как приложение (т. е. в powershell
консоли на моем рабочем столе) и затем выключается примерно за 5 минут до полуночи каждую ночь.
Запуск в качестве приложения имеет ряд преимуществ. Я могу очень легко увидеть, что оно запущено, я могу легко увидеть, что оно работает (непрерывные сообщения, прокручивающиеся вверх по экрану), и я могу принудительно завершить его упорядоченное завершение, нажав ctrl+c
в любое время.
Задача Windows, которая инициирует это, настроена так, run only when user is logged on
что это нормально в 99% случаев, поскольку моя учетная запись всегда находится в системе. Эта опция означает, что задача всегда запускается как приложение на моем рабочем столе.
Иногда сбой питания или обновление вызывают перезагрузку (выход из учетной записи). Я хочу, чтобы моя задача PowerShell перезапускалась, поэтому я добавил второй триггер к задаче «при запуске системы». Эксперименты показывают, что этотолькоработает, если параметр run only when user is logged on
изменен на run whether user is logged on or not
. Однако у этого параметра есть подвох, процесс powershell теперь отображается в диспетчере задач как background process
, а не как app
. Так что теперь у меня нет запущенного скрипта в окне на экране, я не могу отслеживать ход его выполнения и не могу его аккуратно завершить ( task manager
после этого End Task
у меня есть только один вариант)
Я хочу, чтобы диспетчер задач всегда запускал мой скрипт как приложение, а не как фоновый процесс, поэтому я хочу либо
- настроить диспетчер задач так, чтобы при перезагрузке моя учетная запись была в системе и скрипт запускался как приложение, ИЛИ
- настроить диспетчер задач таким образом, чтобы, если моя учетная запись в системе выполнена, то скрипт запускался как приложение, а если моя учетная запись не выполнена (например, после сбоя питания), то (и только тогда) он запускался как фоновый процесс.
Или есть другое решение? По сути, мне нужно, чтобы скрипт работал все время, и мне нужно видеть его работу в окне на рабочем столе, чтобы я мог видеть, что он делает.
решение1
Ладно, думаю, я и сам нашел ответ.
Вместо одной задачи с двумя разными триггерами я создал две разные версии одной и той же задачи, каждую с разным триггером.
- Один из них настроен на запуск каждое утро в 5 минут после полуночи и установлен на
run only when user is logged on
. Это обеспечивает 99% обычных операций — задача выполняется как приложение переднего плана в окне на моем рабочем столе. - Другой установлен на
run at system startup
, этот установлен наrun whether user is logged on or not
Это решает очень странные ситуации, когда задание должно быть запущено после незапланированного отключения. Хорошо, он работает как фоновый процесс, что раздражает, но, по крайней мере, он работает!