【问题标题】:Issue Running PowerShell on Windows Task Scheduler在 Windows 任务计划程序上运行 PowerShell 的问题
【发布时间】:2018-08-05 17:03:27
【问题描述】:

我正在尝试通过任务计划程序运行 PowerShell 命令,但当该任务尝试在我的 Windows Server 2008 R2 环境中运行 PowerShell 时,仍会收到以下结果。

操作“powershell.exe”,返回码为 1。

当我在 PowerShell 中手动运行脚本时,脚本会运行。但是由于某种原因,当我从任务计划程序中调用它时,它没有运行。

下面附上了我的操作设置截图。

我已确保执行以下操作:

  1. 将 ExecutionPolicy 设置为 RemoteSigned
  2. 设置任务以最高权限运行
  3. 将任务设置为无论用户是否登录都运行
  4. 为 Windows 7、Windows Server 2008 R2 设置任务配置

我的想法很新鲜。

【问题讨论】:

  • 运行任务的用户帐户在这台计算机上是否具有批量登录特殊权限? D: 驱动器是映射驱动器吗?
  • 尝试指定参数:-File ".\csv-convert.ps1"
  • 作为最佳实践,我会尝试完整路径您的文件参数。当你不使用-File时,它实际上将其解释为-Command
  • 无论用户是否登录都运行任务时,该任务看不到映射的驱动器,并且工作目录设置为 SYSTEM32 目录。您必须使用 UNC 路径指向脚本中的任何网络驱动器。
  • 你检查了 executionPolicy 吗?尝试添加-executionPolicy Bypass 作为第一个参数,然后输入-file fullfilepath

标签: powershell scheduled-tasks taskscheduler


【解决方案1】:

感谢@TheIncorrigible1 的帮助,我想出了这个。

问题是任务计划程序上的 Start In 字段被设置为根目录不是 C: 的路径

为了解决这个问题,我将 Start In 留空,并在 Add Arguments 字段中调用了带有完整文件路径的脚本文件。

在“添加参数”字段中替换以下内容

.\csv-convert.ps1

我引用的脚本如下:

D:\mypath\csv-convert.ps1

底线,不要在 C 以外目录的路径中启动 powershell:

【讨论】:

    【解决方案2】:

    就我而言,问题在于我从 Windows Server 2016 上的另一个任务计划程序中复制了参数,以便在 Windows 2008 R2 上进行设置 - 希望它能正常工作。

    2016 年,我有:

    -ExecutionPolicy Bypass "C:\Test\SendEmail.ps1"
    

    对于 2008 R2,需要“-File”标志:

    -ExecutionPolicy Bypass -File "C:\Test\SendEmail.ps1"
    

    【讨论】:

      猜你喜欢
      • 2015-07-22
      • 2013-08-22
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 2017-08-22
      • 2015-07-27
      相关资源
      最近更新 更多