我目前正致力于自动化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相关的snapins。
我发现的唯一答案是暗示在IQY文件位置和Sharepoint本身在Excel中授予“信任”。这没有用。 Exception似乎也指向了一个sharepoint问题,但由于脚本在手动启动时运行良好,我无法理解它与Sharepoint有什么关系。 我错过了任务计划程序的一些复杂性吗?
非常感谢任何帮助。
答案 0 :(得分:0)
没关系,我似乎找到了答案。
如果有人遇到同样的问题,那么无论用户是否登录,Excel Com对象都会出现一个错误,如果您将其设置为运行,则不允许它从任务计划程序运行。 为避免在应该运行脚本的机器上创建以下2个文件夹:
(32位,总是)
C:\的Windows \ system32 \设置\ systemprofile \ Dektop
(64位)
C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面
创建文件夹后,它按预期工作。