PowerShell计划任务运行脚本与Excel Com对象

问题描述:

这是一些奇怪的行为,我有一个PowerShell脚本将XLSX文件转换为CSV文件。该脚本在控制台中运行时没有问题。PowerShell计划任务运行脚本与Excel Com对象

试图将任务/脚本结果安排在没有数据(0字节)的CSV文件中。我发现this TechNet forum post证明有帮助。

实质上,包含使用Excel ComObject的Powershell脚本的计划任务失败,因为您必须创建一个文件夹(或64位Windows上的两个文件夹)。完成此操作后,手动运行时的任务按预期工作。它也适用于设置了触发器并且用户已注销的情况。

这种类型的行为与Excel ComObject有关吗?我花了3个小时试图让这个工作。

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

(64Bit) 

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

AFAIK MS没有关于此问题/限制的官方文档。它应该被报告为一个错误(联系Microsoft支持)。

对于excel运行而言,桌面文件夹(系统默认没有这个文件夹)的要求不应该是必需的,至少它应该创建了文件夹(如果缺失)。

+0

更糟的是,TechNet线程是从2010年开始的。请问这是来自Windows,Excel或PowerShell的错误吗? – user4317867

+0

问题出在Excel.Application ComObject(或Excel应用程序本身)上。该问题也记录在vbscript样本中。 –

+0

我无法在https://connect.microsoft.com/directory/上记录一个错误,所以我不确定接下来要采取的步骤。 – user4317867

我不相信微软支持你正在尝试做的事情。根据这一documentation,微软指出:

微软目前并不提倡,不支持,Microsoft Office应用程序自动化从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM ,和NT服务),因为Office在此环境中运行时可能会出现不稳定的行为和/或死锁。

该文档似乎适用于Office 2003,但我不确定自那时起他们是否改变了立场,因为我还没有找到其他文档说明支持。最近到2009年,this MVP重申它不受支持。这些建议似乎是将OpenXML SDK用于非交互式自动化,或使用另一个第三方库直接处理文件格式。

+0

现在事情开始有意义了,这就是我所说的当前行为,由过去的问题所控制。在技​​术世界中,这些问题可能已经通过更新的代码/技术或理解来识别和解决。正如所指出的那样,建议的路线是在Microsoft .NET 3.x Framework中使用OpenXML和System.IO.Package.IO命名空间来编辑Office文件。麻烦是,我必须知道这一点! – user4317867

+0

是的,我遇到了类似的问题。有一个[PSExcel模块](https://github.com/RamblingCookieMonster/PSExcel)利用[EPPlus](http://epplus.codeplex.com/)。你可以使用其中任何一种来减轻学习负担。 – beavel