0

我目前正在自动化一个 powershell 脚本来转储一个小型数据库。该数据库可通过公司 Sharepoint 访问,我正在利用从所述 Sharepoint 导出的 IQY 文件来读取数据库内容。当我手动运行脚本(即从命令行调用它)时,它没有问题,但是当我尝试从任务计划程序启动脚本时,会引发以下异常:

System.Reflection.TargetInvocationException

产生异常的行是:

$iqy = $xl.Workbooks.Open($query, 2, $true)

其中 $xl 是正确创建的新 Excel.Application ComObject,$query 是包含 iqy 文件的完整文件路径的字符串。

至于我的配置,我试图在 Windows Server 2008R2 上运行我的脚本,使用本地管理员用户(应该启动计划脚本的同一用户),该用户也被授权访问 Sharepoint。我正在运行 Powershell 3.0。我没有加载任何与 Sharepoint 相关的管理单元。

我发现的唯一答案暗示将“信任”授予 IQY 文件位置和 Excel 中的 Sharepoint 本身。那没有帮助。异常似乎也指向一个共享点问题,但由于脚本在手动启动时运行良好,我无法理解它与共享点有什么关系。我错过了任务计划程序的一些复杂性吗?

任何帮助将不胜感激。

4

1 回答 1

1

没关系,我似乎找到了答案。

如果有人遇到同样的问题,则 Excel Com 对象似乎有一个错误,如果您将其设置为无论用户是否登录都运行,则该错误不允许它从任务计划程序运行。要规避该问题,请创建以下 2脚本应该运行的机器上的文件夹:

(32 位,始终)

C:\Windows\System32\config\systemprofile\Dektop

(64位)

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

创建文件夹后,它按预期工作。

资料来源:http ://social.technet.microsoft.com/Forums/windowsserver/en-US/aede572b-4c1f-4729-bc9d-899fed5fad02/run-powershell-script-as-scheduled-task-that-uses-excel- com-object?forum=winserverpowershell

于 2013-10-18T14:17:43.923 回答