我有一个 powershell 脚本,我正尝试将其作为计划任务运行。其目的是每晚从 Access 数据库执行导出,然后将导出的平面文件上传到 SFTP 目标。当我手动运行该脚本时,它运行良好,但当我尝试将其作为计划任务运行时,它失败了。我已将问题缩小到无法创建 COM 对象。
我所看到的
我已经对此进行了一些记录,我想我知道发生了什么;我只是不知道如何解决它。
我的 powershell 脚本中有问题的行是$Access = New-Object -ComObject Access.Application
。当我手动运行脚本时,我的 Access COM 对象已成功创建。$Access
是 类型Microsoft.Office.Interop.Access.ApplicationClass
,正如我所料。
如果我将其作为计划任务运行,并在我自己的权限下运行,则不会创建 COM 对象;而是$Access
返回为$null
,这会导致针对该对象的任何方法调用失败。
我能通过在任务计划程序中选中“以最高权限运行”,可以成功创建 COM 对象,但这会产生另一个问题。我的 Access 数据库使用网络共享上的链接表,通过以本地管理员身份运行,我失去了对这些表的访问权限,因为我不再是域用户。
我的问题
有人知道为什么当我以自己的凭据将其作为计划任务运行时似乎无法创建 COM 对象吗?有没有什么解决办法?
如果失败了,有什么建议可以解决我的权限问题吗?看来我陷入了困境;成功创建我的 COM 对象的唯一方法是使用导致我的脚本其余部分失败的凭据。