【问题标题】:Excel does not become visible when the VBScript is triggered via Jenkins通过 Jenkins 触发 VBScript 时 Excel 不可见
【发布时间】:2019-01-16 14:40:34
【问题描述】:

我编写了一个简单的 VBScript 代码:

  • 打开 Excel 工作簿
  • 使 Excel 工作簿可见
  • 将 Sheet1 的 Cell(1,1) 的内容更新为当前系统时间
  • 保存 Excel 工作簿

代码如下:

Option Explicit
Dim objExcel, objBook, objSheet, strPath
strPath = "C:\Users\a614923\Work Repository\Local\Test Complete\Working\05012019\bonn-6.11.9_Regression\FIL_REGRESSION\Stores\Files\ExternalDriver\Test.xlsx"
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.DisplayAlerts = False
Set objBook = objExcel.Workbooks.Open(strPath)
Set objSheet = objBook.Sheets("Sheet1")
objSheet.Cells(1,1) = "Time: " & time
objBook.Save
'objBook.Close
'objExcel.Quit

当我运行这个 VBScript 文件时(直接通过双击,而不是通过 Jenkins),上面提到的所有 4 个步骤都运行良好。 当我通过 Jenkins 运行相同的文件时,会发生以下情况:

  • Excel 工作簿已打开
  • Sheet1 的Cell(1,1) 的内容更新为当前系统时间
  • Excel 工作簿已保存

问题是 Excel 工作簿不可见。我已经坚持这一步已经好几个小时了。今天是我第一次使用 Jenkins。我缺少任何 Jenkins 配置吗?有人遇到过这个问题吗?

我在 Jenkins 上运行 Windows 批处理命令 来实现同样的效果:

C:\Windows\SysWOW64\cscript.exe "C:\Users\a614923\Work Repository\Local\Test Complete\Working\05012019\bonn-6.11.9_Regression\FIL_REGRESSION\Stores\Files\ExternalDriver\TEST.vbs"

这是运行构建后我的构建控制台的样子:

由用户 Gurmanjot Singh 发起 在工作区 C:\Program Files (x86)\Jenkins\workspace\SuiteRunner 中构建 [SuiteRunner] $ cmd /c 调用 C:\WINDOWS\TEMP\jenkins2976471610072523635.bat C:\Program Files (x86)\Jenkins\workspace\SuiteRunner>C:\Windows\SysWOW64\cscript.exe "C:\Users\a614923\Work Repository\Local\Test Complete\Working\05012019\bonn-6.11.9_Regression \FIL_REGRESSION\Stores\Files\ExternalDriver\TEST.vbs" Microsoft (R) Windows 脚本宿主版本 5.8 版权所有 (C) 微软公司。版权所有。 C:\Program Files (x86)\Jenkins\workspace\SuiteRunner>exit 0 完成:成功

任何帮助/建议将不胜感激。

【问题讨论】:

  • Jenkins 正在后台运行其作业,就像 Windows 任务计划程序所做的一样(当您将任务配置为以不同用户身份运行时)。即使您使 Excel 可见,它也会在不同的上下文中变得可见(即对交互式用户不可见)。
  • 您必须遵守此处的 9 条规则之一 - docs.microsoft.com/en-us/windows/desktop/api/winuser/…
  • 感谢@AnsgarWiechers 和@catcat 的建议。我终于能够解决这个问题。我之前将 Jenkins 作为 Windows 服务运行,它以非交互模式打开应用程序。当我使用命令java -jar jenkins.war 通过命令提示符启动 jenkins 时,我能够启动 excel 并且它也是可见的。再次感谢您为我指明了正确的方向。 Reference
  • @Gurman 如果您在服务的属性对话框的“登录”选项卡上选中了“允许服务与桌面交互”,您可能仍然可以使用 Windows 服务完成此操作(将需要作为 LocalSystem 运行才能使用此选项)。
  • @Lankymart 允许特权服务与桌面交互是一个可怕的想法,它允许各种混乱。微软积极discourages this。 Jenkins 及其插件动物园(从最坏的意义上来说)可能特别容易受到攻击。

标签: excel jenkins vbscript


【解决方案1】:

我从 answer 那里得到了帮助 为了解决这个问题,我执行了以下步骤:

  1. https://jenkins.io/download/下载了通用战争包

  1. 使用命令java -jar jenkins.war从命令行运行jenkins

  1. 完成安装(配置代理,如果有的话;下载插件、凭据等)

  2. 输入批处理命令

  3. 点击立即构建后,我可以看到 excel 正在启动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多