从任务计划程序运行时脚本无法启动 exe

从任务计划程序运行时脚本无法启动 exe

我有一个非常奇怪的问题。powershell
脚本用于启动一个 exe。手动运行(右键单击 > 运行)或通过 powershell 控制台中的脚本调用时,它工作正常。但是,当我在任务计划程序中创建任务时,它基本上会创建一个具有正确名称的进程,但该进程是空的并且不执行任何操作。它不需要 CPU,程序未在任务栏中列出,并且程序窗口不会打开。脚本基本上只包含:

Start-Process -FilePath <Path to exe>

我也尝试过:

& <path to file>

但这也不起作用。该任务使用参数启动 powershell.exe 程序

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

我以管理员用户身份运行它,并尝试选中“以最高权限运行”。但这也没有帮助。

当我运行任务然后手动启动程序时,会产生两个具有相同名称但不同句柄的独立进程。通常只能运行一个程序实例。

这显然是任务调度程序的问题,因为如果手动运行,脚本可以正常工作。有人能帮我吗?

答案1

我遇到过一个听起来非常相似的问题。通常,我遇到此问题的应用程序会打开并开始处理文件队列。在这种情况下,正如您所描述的,当从计划任务运行时,它会完全处于空闲状态。最终起作用的是从计划任务调用的批处理文件,然后调用启动 .exe 的 .ps1。

批处理文件中的行如下所示,并从计划任务中调用,其设置与您的描述相匹配。我的设置中的 LaunchProcess.ps1 包含 exe 的标准启动过程。我以前没有使用过这个 2008r2 服务器,但我认为它一直有效。

批处理文件名 = restartProcess.bat

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

相关内容