任务计划程序似乎没有像它应该的那样运行powershell脚本

neu*_*ert 5 powershell scheduled-tasks windows-task-scheduler windows-10

我将以下 PowerShell 脚本保存为 test.ps1:

# test script
Write-Output "z" >> C:\path\to\log.txt
Run Code Online (Sandbox Code Playgroud)

在任务计划中,我将其设置为“无论用户是否登录都运行”。

触发器是“一次”,但我选中了“重复任务间隔: ”并设置为“ 5 分钟”。

在“操作”选项卡中,我有一个操作 - “启动程序”设置为“ powershell.exe ”,“添加参数(可选) ”设置为“ -file c:\path\to\test.ps1 ”和“启动于” (可选) “设置为” c:\path\to ”。

在“历史记录”选项卡中我看到:

任务计划程序在任务“\test”的实例“{a1485114-69fe-4aa8-95ee-27d8f260591a}”中启动了操作“powershell.exe”。

所以看起来它对我有用,但 log.txt 既没有被创建也没有添加到。

有任何想法吗?

Vom*_*yle 7

任务计划程序 PowerShell 脚本未运行

根据您所描述的内容,您可以进行一些细微的调整,并检查其他一些容易被忽视的设置,这些设置有时可能会导致这些相同的问题。

<Exec>
  <Command>Powershell</Command>
  <Arguments>-ExecutionPolicy Bypass -File "c:\path\to\test.ps1"</Arguments>
</Exec>
Run Code Online (Sandbox Code Playgroud)

在“操作”选项卡中,您将创建一个定义为的操作:

  • 行动: Start a program
  • 程序/脚本: Powershell
  • 添加参数(可选): -ExecutionPolicy Bypass -File "c:\path\to\test.ps1"
  • 开始于(可选): C:\Windows\System32\WindowsPowerShell\v1.0 在此输入图像描述

另外,在您的情况下,其中一些选项也可能有所帮助,我不是 100% 需要它们,但很容易测试。

在计划任务的“常规”选项卡中,确保“无论用户是否登录都运行”和“以最高权限运行”选项均已选中。 在此输入图像描述

非常重要的是,请确保“开始时间”是您希望进程第一次运行的确切时间,但是之前的日期,然后它将仅在该时间首先运行。

还可以考虑使用Write-Output "z" | Out-File "C:\path\to\log.txt"带或不带-Append参数将输出重定向到文件,以防出现问题。

最后,在错过计划的启动后,您还可以在“设置”选项卡中尽快取消选中“运行”任务,因为这也可能导致此问题。一个先前的日期,然后它将仅从该时间开始运行。

进一步排除故障

由于您使用的是“无论用户是否登录都运行”选项,因此您可以使用在出现提示时运行此作业的凭据并使用该选项来登录系统。

登录后打开 cmd,然后运行PowerShell.exe -ExecutionPolicy Bypass -File "c:\path\to\test.ps1"并查看从那里得到的结果或错误,这些结果或错误可能需要解决,例如帐户没有对 ps1 脚本的执行访问权限等。

其他资源