Jenkins:运行 Windows 32 位模式下的批处理命令
Jenkins: Run Windows batch commands in 32-bit mode
使用 Jenkins,我们设置了自动化测试 - 在远程机器上安装应用程序和 运行 测试用例。此过程使用批处理文件完成。因为它是一个 windows 应用程序,所以我必须注销(远程计算机)系统以保持会话处于活动状态。为此,我使用了以下脚本:
for /F "skip=1 tokens=3" %%s in ('query user testuser') do
(C:\Windows\system32\tscon.exe %%s /dest:console )
在远程机器上,当我手动 运行 这个脚本时,它工作得很好。但是当相同的脚本(批处理文件)来自 Jenkins 运行 时,我收到以下错误:
'query' is not recognized as an internal or external command, operable program or batch file.
这是因为您 运行 query
来自 32 位进程。在 64 位 Windows 上,32 位进程将放在 File System Redirector
下
In most cases, whenever a 32-bit application attempts to access %windir%\System32
, the access is redirected to %windir%\SysWOW64
. Access to %windir%\lastgood\system32
is redirected to %windir%\lastgood\SysWOW64
. Access to %windir%\regedit.exe
is redirected to %windir%\SysWOW64\regedit.exe
On 64-bit Windows System32 用于 64 位系统工具,SysWOW64 用于 32 位系统工具。 query
仅为 64 位,因此它在 SysWOW64 中不可用,并且不能被 32 位进程看到
C:\>where query
C:\Windows\System32\query.exe
您可以使用 SysWOW64 中的 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.
>C:\Windows\SysWOW64\cmd.exe /c where query
INFO: Could not find files for the given pattern(s).
您需要将 query user testuser
更改为 %windir%\sysnative\query.exe user testuser
。或者更好 change to 64-bit Jenkins
使用 Jenkins,我们设置了自动化测试 - 在远程机器上安装应用程序和 运行 测试用例。此过程使用批处理文件完成。因为它是一个 windows 应用程序,所以我必须注销(远程计算机)系统以保持会话处于活动状态。为此,我使用了以下脚本:
for /F "skip=1 tokens=3" %%s in ('query user testuser') do
(C:\Windows\system32\tscon.exe %%s /dest:console )
在远程机器上,当我手动 运行 这个脚本时,它工作得很好。但是当相同的脚本(批处理文件)来自 Jenkins 运行 时,我收到以下错误:
'query' is not recognized as an internal or external command, operable program or batch file.
这是因为您 运行 query
来自 32 位进程。在 64 位 Windows 上,32 位进程将放在 File System Redirector
In most cases, whenever a 32-bit application attempts to access
%windir%\System32
, the access is redirected to%windir%\SysWOW64
. Access to%windir%\lastgood\system32
is redirected to%windir%\lastgood\SysWOW64
. Access to%windir%\regedit.exe
is redirected to%windir%\SysWOW64\regedit.exe
On 64-bit Windows System32 用于 64 位系统工具,SysWOW64 用于 32 位系统工具。 query
仅为 64 位,因此它在 SysWOW64 中不可用,并且不能被 32 位进程看到
C:\>where query
C:\Windows\System32\query.exe
您可以使用 SysWOW64 中的 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.
>C:\Windows\SysWOW64\cmd.exe /c where query
INFO: Could not find files for the given pattern(s).
您需要将 query user testuser
更改为 %windir%\sysnative\query.exe user testuser
。或者更好 change to 64-bit Jenkins