任务计划程序 PowerShell 脚本未运行

任务计划程序 PowerShell 脚本未运行

我有一个 powershell 脚本,每天早上打开一个 Excel 文件,运行一个宏然后关闭。这个脚本一直运行良好,直到最近我们将旧式网络驱动器移至 Sharepoint Online。

如果我手动运行该脚本,它将启动并执行其应执行的操作。但是,当我将其放在任务计划程序上时,它不会打开该文件。

我曾尝试:

  • 将脚本放在我的 OneDrive 文件夹之外:脚本运行但文件不会打开。
  • 将脚本和文件放在 OneDrive 和 Sharepoint 之外:脚本运行并且文件打开。
  • 在 OD/SP 中,运行任务计划程序以打开 Powershell 窗口并从那里运行脚本:第一个窗口打开,但运行第二个脚本时 Powershell 关闭。

运行任务的用户(我自己)可以完全控制脚本和文件所在的文件夹,并且如上所述,在所有这些情况下,如果手动运行脚本,脚本就会起作用。我似乎无法在互联网上找到任何东西,也无法在日志中找到任何东西(除非我瞎了眼,否则在运行所有先前的任务后都没有创建任何日志),我开始无能为力了。

有人有什么想法/建议吗?

谢谢!

答案1

任务计划程序 PowerShell 脚本未运行

根据您的描述以及我所看到的根据您的配置的 XML 文件你有……

<Exec>
  <Command>"C:\Path\To\OneDrive - Company Ltd\Scripts\pwsh\DonwloadOpen.ps1"</Command>
  <Arguments>-ExecutionPolicy Bypass</Arguments>
<Exec>

我认为需要像这样配置才能从任务计划程序执行 PowerShell。。。

<Exec>
  <Command>Powershell</Command>
  <Arguments>-ExecutionPolicy Bypass -File "C:\Path\To\OneDrive - Company Ltd\Scripts\pwsh\DonwloadOpen.ps1"</Arguments>
</Exec>

因此从行动选项卡上你将创建一个行动定义为:

  • 行动: Start a program
  • 程序/脚本: Powershell
  • 添加参数(可选): -ExecutionPolicy Bypass -File "C:\Path\To\OneDrive - Company Ltd\Scripts\pwsh\DonwloadOpen.ps1"
  • 开始于(可选): C:\Windows\System32\WindowsPowerShell\v1.0 在此处输入图片描述

此外,在您的情况下,其中一些选项可能会有所帮助,但基于安全性和您的配置,我不能 100% 确定它们是必要的,但很容易测试。。。

来自一般的计划任务选项卡,确保无论用户是否登录都运行以最高权限运行两个选项均被选中。

在此处输入图片描述

其他资源


相关内容