2013-10-17 54 views
0

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

System.Reflection.TargetInvocationException 

行正在生成的例外是:

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

其中$ XL是一个新Excel.Application ComObject,正确和$查询创建是包含IQY文件的完整文件路径的字符串。

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

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

任何帮助将不胜感激。

回答

0

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

如果有人遇到同样的问题,它显示Excel Com对象有一个错误,如果您将它设置为运行而不管用户是否登录,则它将不允许它从Task Scheduler运行。 但如脚本应该运行在计算机上创建以下2个文件夹:

(32位,总是)

C:\ WINDOWS \ system32 \设置\ 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