【问题标题】:How to open an Excel file directly from a Powershell script?如何直接从 Powershell 脚本打开 Excel 文件?
【发布时间】:2022-01-23 14:21:41
【问题描述】:

我使用的是 Powershell 7.2.1 版

当我在 Powershell 上运行以下命令时,它工作正常,即 Excel 启动并打开目标 Excel 文件。

& 'PATH_TO_EXCEL_EXE' 'PATH_TO_TARGET_FILE'

但是,当我将此命令传递给计划任务时,Excel 会启动,但目标文件未打开。有关我的 Powershell 脚本的更多详细信息:

$action = New-ScheduledTaskAction -Execute "& 'PATH_TO_EXCEL_EXE' 'PATH_TO_TARGET_FILE'"
...
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "myTask"
# The line below is for testing purpose, to see if my scheduled task can launch correctly.
Start-ScheduledTask -TaskName "myTask"

有人可以告诉我 Powershell 无法复制操作的原因吗,当它被传递给上面的计划任务时?任何解决方法/解决方案将不胜感激。

【问题讨论】:

  • 我认为这是因为您需要提供运行它所需的用户。你可以试试吗?
  • @AbrahamZinala 怎么做?
  • -User 参数与Register-ScheduledTask 一起使用。
  • @AbrahamZinala 那没用。需要说明的是,运行计划任务时会打开 Excel 程序,但不会打开文件。我使用同一个用户执行了所有操作,并按照您的建议将 -User 参数传递给了 Register-ScheduledTask。
  • 你能运行下面的function吗?当我这样做时它对我有用,并且使用相同的概念。

标签: excel powershell windows-10 scheduled-tasks powershell-7.2


【解决方案1】:

根据 ZivkoK 的评论,我添加了一个解决问题的答案:

$excelExePath = ...
$excelFile = ...
$action = New-ScheduledTaskAction -Execute $excelExePath -Argument """$excelFile"""

基于上述操作的计划任务执行其打算执行的操作。

附:当 excel 文件路径包含空格字符时,需要用三引号将 excelFile 参数括起来。例如,如果 excel 文件路径是“C:\MyUser\some random file.xlsx”,则 Excel 会尝试打开 3 个名为“some”、“random”和“file.xlsx”的文件。使用三引号可以解决这个问题。

【讨论】:

  • 很高兴它可以工作。我还建议用双引号将 $excelExePath 括起来...如果您愿意,可以使用转义字符 (`") 而不是三引号 (""")。
猜你喜欢
  • 2011-08-31
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多