我有一个 Windows 脚本 (vbs) 文件,它使用 Microsoft Excel (2010) 的 API 创建 excel 文件。
今天我需要将脚本迁移到运行 Windows Server 2008 R2 的新服务器上。
当我手动运行脚本时,它运行完美。
当我尝试使用相同的用户(相关机器上的管理员)运行与计划任务相同的脚本并选中“以最高权限运行”时,它可以运行到一定程度,但在运行时失败尝试使用 Excel 的 api 来保存文件。
具体来说,脚本永远不会超过wb.saveas
...
logfile.writeline ("About to save c:\scripts\" & agentfilename & ".xls")
wb.saveas "c:\scripts\" & agentfilename & ".xls", 56
logfile.writeline (result & " Saved c:\scripts\" & agentfilename & ".xls")
(我的日志文件包含“即将保存”条目,但不包含“已保存”条目。
请注意,“wb”是在脚本前面创建的,如下所示 -set wb = xl.workbooks.add
这里的一个问题是我看不到发生了什么错误,因为脚本正在作为计划任务运行。
这在以前的服务器(Server 2003)上完美运行。
我在新服务器上完全关闭了 UAC。
该脚本具有对该文件夹的写入权限,因为它能够创建并附加到日志文件。
有任何想法吗?
编辑:
我发现了问题所在。
显然,只有在选中“仅在用户登录时运行”单选按钮时,计划任务才能工作,因为如果用户未登录,Excel 会在尝试保存文件时挂起。奇怪的是我没有这个问题在旧服务器上(相同的 excel 副本,从旧服务器上卸载并安装在新服务器上)
这很痛苦,因为这意味着我需要让用户登录机器才能使这个计划任务工作。如果有人知道绕过这个限制的方法,我会很感激的。