windows - 在 Jenkins CI 上打开 Excel

标签 windows jenkins

我在 Windows 7 上工作(作为 session 1 登录),我的 Jenkins CI 在 session 0 中作为 Windows 服务运行。 我的问题是..我想在 session 0 中通过 Jenkins CI 打开一个 Excel 文件,但想在 session 1 中显示它的 GUI。

我知道 session 0 在 Windows 7 中是隔离的,但是否可以在 session 0 中运行一个进程,然后在另一个 session 中输出?请帮忙。

最佳答案

编辑:
进行了一些尝试和错误,但这最终对我有用(Windows 7 64 位)。

  • 下载PsTools来自微软网站
  • 我们只需要psexec.exe,但您可以提取所有内容。提取到 Jenkins 可以访问的某个位置,最好路径中没有空格。
  • 打开提升的命令提示符:在“开始”的快速搜索中键入 cmd,右键单击 cmd.exe,选择以管理员身份运行
  • 键入 C:\path\to\psexec.exe -accepteula 并按回车键。
  • 键入 C:\path\to\psexec.exe -i 1 cmd 并按回车键。 (如果你看到命令提示符出现,一切都很好,现在关闭它)
  • 在Job configuration中,配置Execute Windows Batch command步骤
  • 写下以下内容:
    C:\path\to\psexec.exe -accepteula && C:\path\to\psexec.exe -i 1 cmd/c start C:\PROGRA~2\MICROSO~1\path\to\excel.执行程序

地点:

  • C:\path\to 是您到 psexec.exe 的完整路径,除非它在您的 %path%
  • -i 1 是您要在其中启动的 session ID。
  • C:\PROGRA~2\MICROSO~1\path\toexcel.exe 的完整路径没有空格。由于大多数 Office 安装将位于带空格的路径下,例如“Program Files (x86)”,您必须找出最短的路径,或将其放置在没有空格的地方。
  • %path% 下安装 excel.exe 并使用常规命令行是不够的

给关心的人一点解释:

  • psexec 需要先安装一个服务。为此,它需要第一次从提升的命令提示符下运行。这是一次性安装步骤。
  • 要使 psexec 正常工作,您需要接受 EULA 提示。这是按 session /用户完成的。因此,即使您在命令提示符下运行 psexec -accepteula,当 Jenkins 服务(在 session 0 中作为本地系统运行)尝试使用它时也无济于事。因此,您必须将其与命令一起放入 Jenkins 作业中。从技术上讲,它只需要存在一次,之后就可以将其删除,但将它保留在那里绝对没有坏处。
  • 我使用了 cmd/k 并从我的本地 cmd 提示符运行这个命令来调试。这让我意识到我找不到逃避空格的方法(尝试了各种引用),所以不得不求助于短文件名。请注意,不需要短文件名,这只是为了转义空格。

关于windows - 在 Jenkins CI 上打开 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602951/

相关文章:

android - Jenkins 在构建 android 项目时停止响应

bash - 使用 shell 脚本将环境变量注入(inject) Jenkins 构建过程

docker - .net sdk 在 alpine linux 上

windows - 在bat中ctrl+c后更改当前目录

c++ - 如何将 frontBuffer 数据复制到纹理 DirectX 9

c++ - 检查特定应用程序的窗口是否处于最小化状态?

输出函数结果的 Bash 脚本

windows - 在 Windows XP 中安装 Xcode

c# - 如何获取已登录的本地 Windows 用户列表?

java - Jenkins - 不使用描述符保留插件设置