【问题标题】:Task Scheduler fails to run batch file despite reporting task completed尽管报告任务已完成,但任务计划程序无法运行批处理文件
【发布时间】:2014-10-15 15:32:41
【问题描述】:

我有一个调用 powershell 脚本的简单批处理文件。

我也看过以下 3 个关于该主题的先前问题:

Run a batch file from Task Scheduler is not working with a java command

Windows Task Scheduler doesn't start batch file task

Task Scheduler not executing batch (bat) file with MSTest commands

似乎我已经尝试了运行任务的每一种组合,但它仍然没有执行我的 powershell 脚本。

批处理文件内容: powershell.exe "E:\SIS\fileCopy.ps1"

如果我手动运行批处理文件中的命令,它运行得很好。以下是我尝试做的事情以使其正常工作:

  • 我已将安全选项更改为以系统身份运行并选中“以最高权限运行”
  • 我已经尝试过“仅在用户登录时运行”、“无论用户是否登录都运行”和“以最高权限运行”的所有其他组合
  • 我已尝试将“开始于(可选)”设置添加到文件所在的文件夹中。

我束手无策,不敢相信微软还没有找到让这件事变得更容易的方法。

【问题讨论】:

  • 为什么要将它作为批处理文件运行?为什么不让任务计划程序直接运行powershell?
  • 老实说,我并不关心我如何运行它,但有人告诉我这是安排 powershell 脚本的方式。您有更好的方式来安排 powershell 脚本吗?

标签: windows powershell batch-file cmd


【解决方案1】:

您需要让任务调度程序执行 Powershell.exe,并将参数设置为 .ps1 文件的路径。

要验证您的脚本是否正常运行,您应该将安全选项设置为“仅在用户登录时运行”。然后它会在运行时弹出 powershell 对话框。我也经常使用start-transcript来查看预定的poweshell脚本的结果。

验证脚本是否正确运行后,您可以设置最适合您情况的安全选项。

【讨论】:

  • 我不敢相信这真的有效。在这里,我试图运行一个批处理文件来运行一个 powershell 脚本。希望这与有关该主题的其他问题一起出现在谷歌搜索结果中。
  • 很高兴它的工作。 Powershell 是命令提示符的替代品。似乎很多人还没有充分利用它的能力来意识到这一点。
【解决方案2】:

使用执行策略标志将该实例标记为不受限制,因为您的 powershell 设置可能会阻止脚本执行。 powershell -executionpolicy unrestricted -Command "E:\SIS\fileCopy.ps1"

【讨论】:

    【解决方案3】:

    我发现如果批处理文件位于 OneDrive 正在同步的文件夹中,任务计划程序将无法运行它。我必须将批处理文件移动到另一个文件夹才能让任务计划程序能够运行它。

    【讨论】:

      猜你喜欢
      • 2014-03-15
      • 1970-01-01
      • 2013-03-01
      • 2014-10-02
      • 2014-12-12
      • 2013-10-19
      • 2019-04-06
      • 2013-12-14
      • 1970-01-01
      相关资源
      最近更新 更多