Powershell Excel Automation - 计划任务中的保存/打开失败

时间:2011-08-18 19:26:36

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

我创建了一个简单的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运行它时,它工作正常。 我创建了一个运行它的计划任务,当我有选项设置时,只有当用户登录时才会运行"那么它会运行良好。

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

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

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

以下是对我有用的答案:

  

您必须创建一个文件夹(或64位窗口上的两个文件夹):

(32位,总是)

  

C:\的Windows \ system32 \设置\ systemprofile \ Dektop

(64位)

  

C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面

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

  

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

答案 1 :(得分:2)

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

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