我一直试图让詹金斯部署工作通过运行一个批处理脚本做一个MSI从詹金斯安装建造机器本身的工作。我已经给适当的访问权限,但仍然是不能够远程运行下面的命令,使用WMIC
wmic /node:myServerIp /user:"clientpc\my-user" /password:"my-password" process call create "D:\someDir\someOtherDir\test.bat"
从上述命令后续响应:
Executing (Win32_Process)->Create()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
ReturnValue = 9;
};
经过一番研究,它看起来像“9”是根据https://msdn.microsoft.com/en-us/library/aa389388(v=vs.85).aspx“找不到路径”的返回值,但我已经验证了远程服务器上存在的路径。
我想要运行test.bat的文件是非常简单的,应该只写一个文本文件。
@echo This is a test.> test.txt
我已验证的服务器上存在这两个文件,并授予“每个人”共享文件夹“someDir”。
我曾尝试前缀“的cmd.exe / c”来叫的路径:
wmic /node:myServerIp /user:"clientpc\my-user" /password:"my-password" process call create "cmd.exe /c D:\someDir\someOtherDir\test.bat"
......为此,我得到:
Invalid Verb Switch.
我已验证的用户访问是通过提供一个错误的密码,在这种情况下,权限被拒绝是正确的。
编辑:改变从D:\someDir\someOtherDir\test.bat
路径D:\\someDir\\someOtherDir\\test.bat
但现在收到以下错误:
ERROR:
Description = The RPC server is unavailable.
编辑2:看起来像我用是为错误的原因的RPC用户。尽管如此故障排除,但是当我用我的AD用户,而不是管理员,我创建运行此,我拿到后再次...
Executing (Win32_Process)->Create()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
ReturnValue = 9;
};
我能得到对Active Directory域中运行以下。
Wmic /node:"ComputerName" process call create "cmd.exe /c (net use o: /delete /y & net use o: \\Server\share /user:Domain\Administrator Password & o:\Dir\Subdir\test.cmd) >> c:\users\MyUser\testout2.txt"
TEST.CMD的非常简单的内容:
echo Just a test >> c:\users\MyUser\testout.txt
date /t >> c:\users\MyUser\testout.txt
time /t >> c:\users\MyUser\testout.txt
在“工作”被发送到“计算机”的域。作业运行批处理/脚本文件是在网络共享上。在“计算机”运行作业将不会看到任何映射驱动器,所以我删除和映射驱动器。我不相信这是以往任何时候都需要删除驱动器,但我补充说,对完整性的考虑。
执行后,testout2.txt示出了执行的命令的批文件和testout.txt包含批处理文件命令的结果如预期。
事情需要注意的: