我将以下 PowerShell 脚本保存为 test.ps1:
# test script
Write-Output "z" >> C:\path\to\log.txt
在任务计划中我将其设置为“无论用户是否登录都运行“。
触发因素是“一度“ 但我有 ”重复任务间隔:“ 已检查并设置为 ”5分钟“。
在“操作”选项卡中,我有一个操作 - “启动程序“设置为”执行程序“ 和 ”添加参数(可选)“ 设置 ”-文件 c:\路径\到\测试.ps1“ 和 ”开始于(可选)“ 设置 ”路径到“。
在“历史记录”选项卡中我看到:
任务计划程序在任务“\test”的实例“{a1485114-69fe-4aa8-95ee-27d8f260591a}”中启动了操作“powershell.exe”。
所以在我看来它正在工作,但是 log.txt 既没有被创建也没有被添加。
有任何想法吗?
答案1
任务计划程序 PowerShell 脚本未运行
根据您的描述,您可以做一些小的调整,并检查一些其他容易忽视的设置,这些设置有时可能会导致同样的问题。
<Exec>
<Command>Powershell</Command>
<Arguments>-ExecutionPolicy Bypass -File "c:\path\to\test.ps1"</Arguments>
</Exec>
来自行动选项卡上你将创建一个行动定义为:
- 行动:
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 脚本的执行访问权限等。