Vbscript 在Jenkins中通过批处理脚本执行VBS

Vbscript 在Jenkins中通过批处理脚本执行VBS,vbscript,jenkins,windows-server-2008,Vbscript,Jenkins,Windows Server 2008,我必须在WindowsServer2008上执行脚本。我用詹金斯来做那件事。批次代码(MainCode.bat)为 install.vbs只在特定目录中安装应用程序。代码摘录如下: Set wshshell = wscript.CreateObject("WScript.Shell") strCmd = "cmd /K C:\temp\InstallApp.exe -c -dir C:\ProductDir" Wshshell.run (strCmd) WScript.Sleep 2000 '

我必须在WindowsServer2008上执行脚本。我用詹金斯来做那件事。批次代码(MainCode.bat)为

install.vbs只在特定目录中安装应用程序。代码摘录如下:

Set wshshell = wscript.CreateObject("WScript.Shell") 
strCmd = "cmd /K C:\temp\InstallApp.exe -c -dir C:\ProductDir"
Wshshell.run (strCmd)
WScript.Sleep 2000
' choice of languages
WshShell.SendKeys "1"
WshShell.SendKeys "~"
    ...
为了测试这个脚本,我直接在WindowsServer2008上运行MainCode.bat,它非常有效。
通过Jenkins运行时,脚本不会执行。没有错误消息,安装未完成

通过Jenkins调用MainCode.bat的代码是

call "C:\temp\MainCode.bat".

当您使用SendKeys时,我假设您运行的流程是GUI应用程序。您可能正在以无头模式作为windows服务运行Jenkins slave,在这种情况下,GUI应用程序将出现问题。您应该以jnlp的身份运行Jenkins slave agent。

Jenkins作业的日志上说了什么?为什么您认为脚本没有执行?如何将
MainCode.bat
install.vbs
InstallApp.exe
复制到
C:\temp
InstallApp.exe
的命令是否可以改进,使其不需要
SendKeys
?(“真正的”安装程序可以在无人值守的情况下使用,如果不是无声的话。)@TomBlodget:谢谢你的提问。我没有得到Jenkins作业的日志,而是得到控制台输出,上面写着“C:\Temp>exit 0,通知上游项目作业完成:SUCCESS”。我得出结论,脚本没有执行,因为既没有创建此目录C:\ProductDir,也没有安装程序。我手动将MainCode.bat、install.vbs和InstallApp.exe复制到C:\Temp,然后通过Jenkins执行ode。虽然我已经编写了复制的代码,但它也可以工作。我认为,如果您在系统帐户下作为Windows服务运行Jenkins,SendKeys可能无法工作。您可以在用户帐户下将其作为Windows服务进行尝试,也可以使用
java.exe
直接运行它。您可以跟踪使用Sysinternal的进程监视器创建的进程。@Kriti jenkins的设置如何?作为服务或war文件运行?它是从机且用户具有提升的权限吗?请尝试允许服务与桌面交互。运行“服务”,右键单击Jenkins服务并选择属性。在“登录”选项卡上,启用“允许服务与桌面交互”
call "C:\temp\MainCode.bat".