【问题标题】:Powershell Excel Automation - Save/Open fails in Scheduled TaskPowershell Excel 自动化 - 计划任务中的保存/打开失败
【发布时间】:2011-10-30 02:09:00
【问题描述】:

我创建了一个简单的 powershell 脚本,它将创建一个 excel 实例并保存一个工作簿:

$excel = New-Object -ComObject Excel.Application
$workbook = $excel.Workbooks.Open("C:\Test\foo.xls")
$workbook.SaveAs("C:\Test\bar.xls")

# cleanup code ...

当我直接从 powershell 运行它时,它工作正常。 我创建了一个运行它的计划任务,当我设置了“仅在用户登录时运行”选项时,它就会运行良好。

当我更改此选项以运行无论用户是否登录时,尝试打开/保存文件都会失败。我使用的帐户具有正确的权限。我已将帐户设置为作为服务登录。

有什么建议吗?

【问题讨论】:

标签: excel powershell windows-server-2008 scheduled-tasks


【解决方案1】:

我被这个烧死了,不想重写代码。我看到你的帖子和其他几个让我准备放弃的帖子。然而,我的坚持得到了回报。我试图让 Jenkins 运行一个脚本来清点我们的生产环境并输出到 Excel。我不想要文本文档,因为我在 RED 中突出显示不匹配的软件版本,因此需要 Excel。

这是对我有用的答案:

您必须创建一个文件夹(或在 64 位 Windows 上创建两个):

(32 位,始终)

C:\Windows\System32\config\systemprofile\Desktop

(64位)

C:\Windows\SysWOW64\config\systemprofile\Desktop

某人作为来源提供的链接:

http://www.patton-tech.com/2012/05/printing-from-scheduled-task-as.html

我的来源是:

http://social.technet.microsoft.com/Forums/en/winserverpowershell/thread/aede572b-4c1f-4729-bc9d-899fed5fad02

【讨论】:

  • 我正要发布同样的内容 :) 很高兴注意到需要创建桌面文件夹。
  • 不幸的是,这对我不起作用,但我确实想提一下,您的 32 位路径中有错字。你写的是“Dektop”而不是“Desktop”(注意 S
  • 我不敢相信我只需要添加这两个文件夹来完成这项工作。非常感谢!
  • 我认为这应该是这篇文章的公认答案。只有指向 patton-tech 的链接不再起作用,但无论如何也没有用
【解决方案2】:

我记得必须在 C# 应用程序中执行类似的操作,当您在 Visual Studio 上构建它时运行良好,但在 CI 服务器上的服务下运行失败。我认为这是 Office 自动化本身的限制,Microsoft 不建议/完全不支持这样做 在此处查看 Office 服务器端自动化的注意事项 - http://support.microsoft.com/kb/257757。它显示了问题和替代方案。

就我而言,我不得不放弃 Office Interop,并使用 EPPlus (http://epplus.codeplex.com/) 来处理 excel。它工作得很好,而且速度也快得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多