从任务计划程序调用PowerShell函数

kulphzqa  于 2023-05-22  发布在  Shell
关注(0)|答案(1)|浏览(161)

Powershell 7:
我在$PSModulePath中有一个函数。从PS控制台,这工作正常:

Invoke-Main -Env DEV -Exchange AU -Period DAILY

在Windows任务计划程序中,我已配置:

Program Script:  "C:\Program Files\PowerShell\7\pwsh.exe"
Add Arguments:  Invoke-Main -Env DEV -Exchange AU -Period DAILY, and
Add Arguments:  -Command {Invoke-Main -Env DEV -Exchange AU -Period DAILY}

尽管任务计划程序返回0x 0,但这些命令不执行任何操作
我把它放在一个.ps1文件中:

Invoke-Main -Env DEV -Exchange ALL -Period DAILY, and
& Invoke-Main -Env DEV -Exchange ALL -Period DAILY

AddArguments: path-to.ps1, and
AddArguments: -File path-to.ps1

两者都可以从PS控制台正常工作,但都挂起在任务计划程序与0x 41301。
我有其他的PS脚本运行从任务计划罚款,所以我知道如何做到这一点。实际上,它们包含Invoke-Main中的代码。它只是开始成为一个维护麻烦,所以我把代码移到一个函数。
我不知道如何让任务计划程序调用PS功能。

juud5qan

juud5qan1#

我在最初的帖子之前做了谷歌搜索。但是,有时候您只是没有使用正确的搜索字符串。
今天,经过Google搜索,我发现了这个:
Use Scheduled Tasks to Run PowerShell Commands on Windows
“秘诀”是将&符号与-Command开关一起使用。因此,最终的任务计划程序命令字符串为:

"C:\Program Files\PowerShell\7\pwsh.exe" -Command &{Invoke-Main -Env DEV -Exchange AU -Period DAILY}

将-NoExit开关添加到pwsh.exe命令中也有助于调试,直到进程完全调试完毕。
希望这对将来有人发现这个问题有帮助。

相关问题