使用Jenkins,我们进行了设置自动化测试 - 安装应用程序并在远程计算机中运行测试用例。此过程使用批处理文件完成。由于它是一个Windows应用程序,我必须注销(远程机器)系统保持会话活动。为此,我使用了以下脚本:
for /F "skip=1 tokens=3" %%s in ('query user testuser') do
(C:\Windows\system32\tscon.exe %%s /dest:console )
在远程计算机中,当我手动运行此脚本时,它可以正常运行。但是当从Jenkins运行相同的脚本(批处理文件)时,我收到以下错误:
'query'未被识别为内部或外部命令,可操作 程序或批处理文件。
答案 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