PowerShell脚本在任务计划程序中无法运行

5
我创建了一个PowerShell脚本来安装Windows更新。
如您所知,在安装更新时,可能需要重启计算机(而仍有更新剩余)以安装脚本。
我实现的是一个任务,在脚本开始时导入并在每次重启后运行脚本(并在登录屏幕上安装剩余的脚本),直到没有剩余的脚本为止。
在最后一次更新后,脚本将从任务计划程序中删除该任务。
我的实现(下载/安装/添加任务/删除任务)完美地工作。
只是我的脚本在重启后无法运行,我不知道为什么!
这是我的任务: enter image description here 但是,在计算机重启后,脚本就不再运行了,任务计划程序中的错误状态为0x1
我做了一些谷歌搜索,发现参数可能是错误的(当然路径是正确的),但我已经尝试过以下参数字段:
  • (不带引号)-文件路径
  • -ExecutionPolicy Bypass -文件路径
  • -NoProfile -ExecutionPolicy Bypass -文件路径 -force
  • 将上述组合与添加或省略引号混合
任务计划程序未启动我的脚本的问题可能是什么?
谢谢
编辑
添加了批处理作业属性的登录截图:

enter image description here


1
从您在底部的项目符号中,我经常使用第2个:-ExecutionPolicy Bypass -File C:\Path\To\File.ps1。这应该适用于运行计划任务。唯一的问题是帐户可能必须被允许“作为批处理作业登录”,您可以在此处找到说明。 - TheMadTechnician
很遗憾,它仍然无法工作,出现了相同的0x1错误。我已经添加了一张作业属性登录日志的截图,并且不要假设它存在任何问题。 - Kahn Kah
3个回答

8
问题与我的START IN为空有关!
我的脚本位于C:\ Scripts \ Scripts.ps1,所以我必须填写C:\ Scripts \。
这是你需要做的操作,否则PS将在它所在的文件夹(Windows文件夹)中启动。
由于该脚本使用其他文件,因此我必须指定START IN路径,此问题在此之后得到解决。

5
尝试使用以下参数,将其替换为实际路径(如果您的路径中有空格): -ExecutionPolicy Bypass -file "C:\Path to\script.ps1" 从错误信息来看,似乎无法运行脚本。除此之外,@TheMadTechnician的评论是准确的。从您的图片来看,似乎您正在将任务安排为本地管理员帐户,因此确保启用批处理登录不需要该帐户(如果它是真正的本地管理员,并且该帐户仍在服务器上的Administrators本地组中)
还要注意--如果计划的任务在运行时尝试删除自身,则可能会出现问题。我没有进行过测试,但您可以构建一个定期任务,让其休眠几分钟,并尝试使用已测试的命令在其运行时注销它,以查看是否失败。

谢谢你的回答。我尝试使用了你提供的参数,但是它失败了,并且出现了与我的问题相同的错误(0x1)。然而,我不认为“批量登录”启用存在问题。我已经在我的问题中添加了设置的截图(假设我是唯一的用户/管理员)。 - Kahn Kah
1
这个失败是因为我在脚本两侧使用了“ ”作为参数,我使用以下内容作为参数:-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:_MaintenanceScripts\ProcessPrices.ps1。 - AquaAlex

5

在您的计划任务中调用Powershell.exe:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

设置这些参数:

-noprofile -executionpolicy unrestricted -noninteractive -file "C:\Path\To\MyScript.ps1"

这个失败是因为我在脚本两侧使用了“ ”作为参数,我使用以下内容作为参数:-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:_MaintenanceScripts\ProcessPrices.ps1。 - AquaAlex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接