Скрипт не может запустить exe при запуске из планировщика задач

Скрипт не может запустить exe при запуске из планировщика задач

У меня очень странная проблема.
Скрипт powershell запускает exe. Он отлично работает при ручном запуске (щелчок правой кнопкой мыши > запустить) или через вызов скрипта в консоли powershell. Однако, когда я создаю задачу в планировщике задач, он фактически создает процесс с правильным именем, но процесс пустой и ничего не делает. Он не требует процессора, программа не отображается на панели задач, а окно программы не открывается. Скрипт фактически содержит только:

Start-Process -FilePath <Path to exe>

Я также попробовал:

& <path to file>

но и это не сработало. Задача запускает программу powershell.exe с параметром

-ExecutionPolicy Unrestricted -Command "& C:\Scripts\MyScript.ps1"

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

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

По-видимому, это проблема с планировщиком задач, поскольку скрипт работает нормально, если его запустить вручную. Может ли кто-нибудь мне помочь?

решение1

Я столкнулся с чем-то, что звучит как очень похожая проблема. Обычно приложение, с которым у меня была эта проблема, открывалось и начинало обрабатывать очередь файлов. В этом случае, как вы описали, оно полностью простаивало при запуске из запланированной задачи. В конечном итоге сработал пакетный файл, вызванный из запланированной задачи, который затем вызвал .ps1, который запустил .exe.

Строки в пакетном файле выглядят так, как показано ниже, и вызываются из запланированной задачи с настройками, соответствующими вашему описанию. LaunchProcess.ps1 в моей настройке содержит стандартный процесс запуска для exe. Я не использовал этот сервер в прошлом 2008r2, но я думаю, что он работает и по сей день.

Имя файла пакетного файла = restartProcess.bat

SET ThisScriptsDirectory=%~dp0 SET PowerShellScriptPath=%ThisScriptsDirectory%LaunchProcess.ps1 PowerShell -NoProfile -ExecutionPolicy Bypass -command "& {start-process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPath%""' -Verb RunAs}";

Связанный контент