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

Start-Process -FilePath <Path to exe>

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

& <path to file>

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

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

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

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

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

1 ответ1

0

Я столкнулся с тем, что звучит как очень похожая проблема. Обычно приложение, с которым у меня возникла эта проблема, открывалось и начинало обрабатывать очередь файлов. В этом случае, как вы описали, он будет полностью простаивать при запуске из запланированной задачи. В конечном итоге сработал пакетный файл, вызванный из запланированной задачи, которая затем называлась .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 "PlayS%% PowerS%% Беги как}";

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .