我创建了以下.bat
文件来关闭 onedrive 服务:
whoami
"C:\Program Files\Microsoft OneDrive\OneDrive.exe" /shutdown
如果我双击.bat
图标文件,它就会起作用。此外,当我运行命令行 shell 并输入 时,它也会起作用"C:\Users\john\Desktop\onedrive-shutdown.bat"
。
现在,我在以(登录属性)连接方式的同一台 Windows 服务器上运行 Jenkins 服务john
,并且创建了一个包含以下构建步骤的项目:
不幸的是,/shutdown
由于我得到以下输出,该过程挂起/循环:
whoami
john
"C:\Program Files\Microsoft OneDrive\OneDrive.exe" /shutdown
(和...
图标。此外,OneDrive 不会关闭)。
我错过了什么?
注意:
- Jenkins 服务登录属性设置为:
john
- 我试过了
psexec64 -i 1 -u john -p PASSWORD "C:\Program Files\Microsoft OneDrive\OneDrive.exe" /shutdown
,但是没有用(结果相同)。 runas
由于用户john
已经有密码,因此我无法使用。- 任何其他
.bat
文件,例如echo Hello World
都可以。
这可能是因为 Jenkins 在会话 0 中作为 Windows 服务运行,而 OneDrive 在交互式用户会话(会话 1、2 等)中运行。/shutdown
由于我在正确的会话中运行该命令,因此手动执行该命令时可以正常工作,但是当 Jenkins 运行该命令时,OneDrive 无法正确响应,因为它处于不同的会话中。