Windows-планирование сценария Power-Shell ненадежно - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь запускать автоматический скрипт powershell весь день, каждый день.Но у меня проблемы с тем, чтобы он работал стабильно и надежно, сам скрипт работает нормально, он заставляет планировщик Windows запускать его последовательно, вот в чем проблема.

Сценарий вызывается планировщиком окон каждое утро в 1:00.как powershell.exe с аргументами команды:

-windowstyle Normal  -NoExit -file "d:\work\PwrShellScripts\FlmToDb_010.ps1"

После вызова сценарий будет работать непрерывно до 23 часов вечера, пока не выйдет.

Сам сценарий работает надежно, но планированиеработает только девять раз из десяти, время от времени происходит сбой с ошибкой:

Планировщик задач не запускает задачу "\ DailyFlm", так как экземпляр "{aa18e048-d8b2-4e16-8737-fc7babbb609e} "этой же задачи уже выполняется.

Вопрос в том, как обеспечить надежную работу сценария каждый день?

Другая информация, которая может иметь отношение… ....

Аргументы -windowstyle Normal -NoExit означают, что скрипт powershell запускается в командном окне (а не в качестве фонового процесса) и окно останется открытым, если sessiна концах.

Это делается по двум причинам, во-первых, это обеспечивает визуальную индикацию того, что процесс действительно выполняется, и, во-вторых, если процесс завершается сбоем, он позволяет проверить сообщение об ошибке.Сценарий powershell не включает в себя ведение журнала файлов, поэтому запуск его в командной строке также позволяет мне подтвердить, что предыдущий сеанс завершился без ошибок.

Одна из проблем заключается в том, чтопроцесс работает в 90% случаев, если я делаю какие-либо изменения, мне нужно подождать 10 дней или более, чтобы подтвердить, действительно ли они работают!

Я подозреваю, что проблема может быть связана с тем, что консольостается открытым (-NoExit) при выходе из сценария.В большинстве случаев окна, кажется, распознают, что, хотя консоль все еще открыта, соответствующий сценарий завершился.

Я предполагаю, что иногда он решает, что, поскольку консоль открыта, процесс все еще выполняется.Я не могу определить разницу между теми случаями, когда планирование работает нормально, и теми случаями, когда оно не работает.

Есть предложения?

Обновления ... Планировщик не запускает заданиев среднем один раз каждые 10 дней.Я бы предпочел, чтобы скрипт работал на переднем плане, это значительно облегчает мониторинг его прогресса и делает его таким очевидным, если он не работает.

1 Ответ

0 голосов
/ 08 июня 2018

та же задача уже запущена.

Скрипт может делать то, что предполагается, пока он выполняется, но есть один недостаток ... он не закрывается должным образом.Это именно та проблема, о которой вы говорите.Когда вы запускаете задачу powershell, имя процесса - powershell.exe с соответствующим идентификатором процесса, и именно так планировщик задач знает, завершен он или нет.

Чтобы это исправить, я предлагаю написать скрипт для уничтожения всех powershell.exe процессов и запланировать его выполнение в 00:55 каждый день.

...