这将创建一个可运行并写入文件的任务:
schtasks --% /create /tn "test" /sc minute /mo 10 /ru SYSTEM /tr "powershell get-date | out-file -Encoding:ascii c:\log.log"
这不会创建日志文件,而且我看不到任何错误:
schtasks --% /create /tn "test2" /sc minute /mo 10 /ru SYSTEM /tr "powershell someexe --help | out-file -Encoding:ascii c:\otherlog.log"
第二个命令没有写入日志文件,为什么?即使失败,它仍应写入文件。如果我从命令行运行此命令,它仍会写入文件:
PS C:\> powershell doesntexist --help | out-file -Encoding:ascii c:\fail.log
PS C:\> cat .\fail.log
doesntexist : The term 'doesntexist' is not recognized as the name of a cmdlet, function, scrip
or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ doesntexist --help
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (doesntexist:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
所以我不明白为什么第一个任务是写入文件而第二个任务不是
答案1
powershell someexe --help
甚至powershell someexe.exe --help
:如果使用不带前缀路径的可执行文件名称,则它仅在环境路径中运行。如果没有它,PowerShell 不会从当前目录执行。
在参数中使用可执行文件的绝对路径/tr
(例如powershell c:\myexes\someexe.exe --help
)。
避免使用相对路径(例如powershell .\someexe.exe --help
),因为 当前目录 .\
有点不清楚起始目录没有明确和清晰的定义。