PowerShell脚本未与任务计划程序

时间:2017-03-10 16:41:29

标签: powershell scheduled-tasks windows-server-2012-r2

所以我创建了一个安装Windows更新的PowerShell脚本,

您可能知道,在安装更新时,可能需要重新启动PC(当仍有更新时)才能安装脚本。

我实现的是在脚本开始时导入的任务,并在每次重新启动后运行脚本(并在登录屏幕上安装剩余的脚本),直到没有剩余的脚本。

在上次更新后,脚本将从任务计划程序中删除任务。

我的实现(下载/安装/添加任务/删除任务)完美运行。

只有我的脚本在重启后才能运行并且我不知道为什么!

这是我的任务: enter image description here

在重新启动电脑后,脚本不再运行,任务调度程序中的错误指出 0x1

我做了一些谷歌搜索并发现参数可能是错误的(第三张图片当然道路是正确的)但我已经尝试过(在参数字段中):

  • (无引号)-file path
  • -ExecutionPolicy Bypass -file path
  • -NoProfile -ExecutionPolicy Bypass -file path -force
  • 将上述组合与添加或遗漏的引号混合

任务调度程序没有启动我的脚本会出现什么问题?

由于

修改

添加了作为批处理作业属性登录的屏幕截图:

enter image description here

3 个答案:

答案 0 :(得分:1)

尝试使用此参数,将其替换为实际路径(如果路径有空格):

-ExecutionPolicy Bypass -file "C:\Path to\script.ps1"

从错误中看,它似乎无法运行脚本。除此之外,@ TheMadTechnician的评论是准确的。从你的图片来看,看起来你正在将任务安排为本地管理员帐户,因此该帐户不应该要求确保启用登录批处理(如果它是真正的本地管理员并且该帐户仍在管理员中服务器上的本地组)

另请注意 - 如果计划任务在运行时尝试删除自身,则可能存在问题。我没有亲自测试过,但你可以构建一个睡眠时间为几分钟的计划任务,并在测试命令运行时尝试取消注册,以查看是否失败。

答案 1 :(得分:0)

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

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

设置此参数:

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

答案 2 :(得分:0)

问题出在我的START IN上-空着!

我的脚本位于C:\Scripts\Scripts.ps1,所以我必须填写C:\Scripts\

这是您需要执行的操作,否则PS将在其所在的文件夹(Windows文件夹)中启动。

由于脚本使用其他文件,因此我必须指定START IN路径,此之后便已解决。