【发布时间】:2017-08-24 22:27:41
【问题描述】:
我有一个 ETL 流程,在一个 .bat 文件中:
- 将 .xlsx 文件复制到目录
- 按进度打开excel文件
- 将信息复制到进度数据库
当我由用户运行 .bat 文件时:资源管理器中的 TableauAdmin:
- 效果很好!
- TableauAdmin 显示为 .log 文件的所有者
然后,我在 Windows Server 2012 中创建了所有者:TableauAdmin 和运行该任务的用户:TableauAdmin 的计划任务。具有最高权限,无论用户是否登录...
如果我尝试运行任务,我会收到此错误:
访问组件属性/方法时发生错误:打开。 Microsoft Excel 无法访问该文件 'd:\ses\dat\FacturaMes-240817.xlsx'。有几种可能 原因:错误代码:0x80020009 d:\ses\pro\sescargaexcelbd.p (5890)
现在,.log 文件的所有者是用户“Administrators”。
另外,我在日志文件中写入 %USERNAME% 并显示为“TableauAdmin”!!!
无法通过将帐户 TableauAdmin 更改为包含 TableauAdmin 的管理员来使用 progress-office-excel 选项。
对每一件事进行什么更改都可以正常工作?
今天我将运行任务的用户更改为管理员...
现在一切正常,但运行它的用户并没有显示为管理员,
运行该进程的用户是另一个管理员....
- 因此 Excel 文件归管理员所有
- 由管理员打开
- 但由其他管理员运行,而不是 TableauAdmin....
为什么现在运行正常?
【问题讨论】:
-
And now, the owner of the .log files, is the user "Administrators".嗯 - 这就是你的线索。批处理在administrators用户下运行,因此环境设置将是 that 用户的设置,而不是 Tableauadmin 的设置。更改任务计划程序中的用户或将批处理中的环境变量设置为套件 Tableauadmin 的那些(但在这种情况下,日志仍将归 Administrators 所有) -
无论用户是否登录都安排任务运行意味着调度程序服务在会话 0(服务)中执行它。此会话与创建用户界面是隔离的,很多 GUI 应用程序都会失败,这可能包括 MS Excel。
-
您错误地认为这与管理员组拥有的日志文件有关。您的进程作为“TableauAdmin”运行,它是管理员组的成员。通常,UAC 会在禁用此组的情况下记录此用户拥有的日志(实际上仅对拒绝 ACE 启用)。它在 elevated 登录的访问令牌中启用。无论何时启用管理员组,系统都会根据策略将创建的文件的所有者设置为管理员组本身,而不是管理员用户。这允许所有管理员始终如一地访问由任何管理员创建的文件。
标签: batch-file task administrator taskscheduler