Jenkins:以32位模式运行Windows Batch命令

时间:2017-12-07 14:53:27

标签: batch-file jenkins 32bit-64bit

使用Jenkins,我们进行了设置自动化测试 - 安装应用程序并在远程计算机中运行测试用例。此过程使用批处理文件完成。由于它是一个Windows应用程序,我必须注销(远程机器)系统保持会话活动。为此,我使用了以下脚本:

for /F "skip=1 tokens=3" %%s in ('query user testuser') do 
(C:\Windows\system32\tscon.exe %%s /dest:console )

在远程计算机中,当我手动运行此脚本时,它可以正常运行。但是当从Jenkins运行相同的脚本(批处理文件)时,我收到以下错误:

  

'query'未被识别为内部或外部命令,可操作   程序或批处理文件。

1 个答案:

答案 0 :(得分:3)

这是因为您从32位进程运行query。在64位Windows上,32位进程将放在File System Redirector

  

在大多数情况下,只要32位应用程序尝试访问%windir%\System32,访问权限就会重定向到%windir%\SysWOW64%windir%\lastgood\system32的访问权限被重定向到%windir%\lastgood\SysWOW64%windir%\regedit.exe的访问权限已重定向至%windir%\SysWOW64\regedit.exe

在64位Windows上,query位于System32

C:\>where query
C:\Windows\System32\query.exe

通常情况下,32位进程无法看到它。您可以使用32位cmd检查:

C:\Windows\SysWOW64\cmd.exe /c query user testuser
'query' is not recognized as an internal or external command,
operable program or batch file.

您需要将query user testuser更改为%windir%\sysnative\query.exe user testuser