我在Windows 10计算机上运行Jenkins服务器作为服务。在其中一个Jenkins-jobs中,我必须使用COM应用程序执行测试。开发人员在RDP的日常工作中也使用同一台计算机,并且当没有常规开发人员使用它时,Jenkins-job工作在晚上运行。但是,如果没有用户登录计算机或使用RDP,则作业中的脚本无法启动COM应用程序,并显示以下消息:
由于已配置,无法启动服务器进程 身份不正确。检查用户名和密码。
我发现问题似乎是COM应用程序的标识取自当前的交互式用户,如果没有,则失败,请参阅
我似乎无法解决我的问题。我看到两个选择:
对于 1 ,我会看到以下解决方案以及它们不起作用的原因:
tscon.exe 0 /dest:console
退出,这将使会话保持打开状态。由于我们团队中有15人使用该机器而不是RDP,因此无法正常工作,人们将在当天结束时忘记使用此命令。对于 2 ,我无法找到办法。
我可以在Windows中安排用户在作业开始前自动登录吗?在作业执行之前,我可以使用第二台计算机并在第一台计算机上设置RDP会话吗?
答案 0 :(得分:0)
由于没有人能够提供良好的解决方案,因此我将输入我的工作量作为答案和可能的解决方案。我最终要做的是使用第二台计算机(运行Windows),并在该计算机上安排一个任务,该任务每天晚上(在Jenkins作业开始之前)打开运行Jenkins的计算机的RDP会话。这样,Jenkins作业和COM应用程序就有了一个可以使用的活动用户。
这是我实现这一目标的方式:
创建一个包含以下内容的蝙蝠文件
mstsc C:\Path\To\saved_rdp_file.rdp
在Windows Sceduler中创建一个任务,该任务每天晚上调用在步骤5中创建的蝙蝠文件。
可选:如果要在Jenkins完成后关闭rdp会话,请创建第二个bats脚本并对其进行规划,其中包含:
tasklist /FI "imagename eq mstsc.exe" | find "mstsc.exe" && taskkill /f /im mstsc.exe || echo process "mstsc.exe" is not running