CMD/PS1 从提示符运行但不作为系统计划任务运行?

CMD/PS1 从提示符运行但不作为系统计划任务运行?

起初我尝试使用以下命令作为计划任务(请参阅下面的任务完整转储)

 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -Command C:\Users\knegyesi\Documents\wsl2-network.ps1 *>C:\Users\knegyesi\AppData\Local\Temp\log.txt

哪个但是,startwsl hostname -I返回的是空的,而从命令提示符下它可以完美运行。使用 wsl.exe 的完整路径不会改变任何东西。

然后我读到使用 cmd 或 vbs 文件,而不是直接运行 PS1。然而,这根本无法运行。

我已经尽可能简化了我的案例。我查看了类似的问题,它们要么没有提供解决方案,要么解决方案不起作用。

我已经创建了一个 cmd 文件:

echo foo > %TEMP%\log.txt

我已经创建了计划任务

Folder: \
HostName:                             CF3N2Z2
TaskName:                             \wsl2-network
Next Run Time:                        N/A
Status:                               Ready
Logon Mode:                           Interactive/Background
Last Run Time:                        11/15/2021 2:25:52 AM
Last Result:                          0
Author:                               APOLLO\knegyesi
Task To Run:                          C:\Users\knegyesi\Documents\wsl2-network.cmd
Start In:                             N/A
Comment:                              N/A
Scheduled Task State:                 Enabled
Idle Time:                            Disabled
Power Management:                     Stop On Battery Mode, No Start On Batteries
Run As User:                          SYSTEM
Delete Task If Not Rescheduled:       Disabled
Stop Task If Runs X Hours and X Mins: 72:00:00
Schedule:                             Scheduling data is not available in this format.
Schedule Type:                        At system start up
Start Time:                           N/A
Start Date:                           N/A
End Date:                             N/A
Days:                                 N/A
Months:                               N/A
Repeat: Every:                        N/A
Repeat: Until: Time:                  N/A
Repeat: Until: Duration:              N/A

然后我就这么做了schtasks /Run /TN "wsl2-network"

任务计划程序 GUI 报告成功。但是,未创建日志文件。手动运行脚本有效。我尝试添加@echo off以确保程序没有输出。

我完全陷入困境,我真的需要这个脚本在启动时运行而不是在登录时运行:(

答案1

两条评论:

首先,正如 DavidPostill 上面提到的,您不应该假设计划任务中任何环境变量的值,因为这是一个有限的环境。

第二,echo是命令提示符(CMD)的命令,其中的计划任务没有运行。

对于计划任务,最好使用一个.bat将在隐式 CMD 环境中执行的文件。请记住对调用的每个可执行文件使用完整路径,不要假设 PATH 与登录中的 PATH 相同。

相关内容