У меня очень странная проблема.
Скрипт 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}";