タスク スケジューラから実行した場合、スクリプトは exe を起動できません

タスク スケジューラから実行した場合、スクリプトは exe を起動できません

非常に奇妙な問題があります。PowerShell
スクリプトは exe を起動します。手動で実行すると (右クリック > 実行)、または PowerShell コンソールでスクリプト呼び出しによって正常に動作します。ただし、タスク スケジューラでタスクを作成すると、基本的に適切な名前のプロセスが作成されますが、プロセスは空で何も実行されません。CPU は不要で、プログラムはタスク バーに表示されず、プログラム ウィンドウは開きません。スクリプトには基本的に次のものだけが含まれています。

Start-Process -FilePath <Path to exe>

私も試しました:

& <path to file>

しかし、それもうまくいきませんでした。タスクはパラメータでpowershell.exeプログラムを起動します。

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

管理者ユーザーとして実行し、「最高権限で実行」をチェックしてみました。それでも効果はありませんでした。

タスクを実行してからプログラムを手動で起動すると、同じ名前でハンドルが異なる 2 つの別個のプロセスが作成されます。通常、プログラムのインスタンスは 1 つしか実行できません。

スクリプトを手動で実行すると正常に動作するため、これはタスク スケジューラの問題であると思われます。どなたか助けていただけませんか?

答え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}";

関連情報