WMIC:远程运行批处理脚本

时间:2016-09-12 02:56:02

标签: batch-file wmi

我一直试图通过运行批处理脚本从Jenkins构建计算机本身安装msi来让Jenkins部署作业工作。我已授予适当的访问权限,但仍无法使用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'找不到路径'根据{{​​3}},但我已经验证了远程服务器上存在路径。

我尝试运行的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;
};

1 个答案:

答案 0 :(得分:0)

我能够让以下内容在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

“作业”正在发送到域上的“ComputerName”。作业运行的批处理/脚本文件位于网络共享上。在“ComputerName”上运行的作业将看不到任何映射的驱动器,因此我删除并映射驱动器。我不认为有必要删除驱动器,但为了完整起见,我补充说。

执行后,testout2.txt显示执行命令的批处理文件 testout.txt包含预期的批处理文件命令的结果。

需要注意的事项:

  • 如上所述,从远程作业中看不到映射的驱动器
  • 您正在目标计算机的环境中执行 - 驱动器号需要对该计算机有意义
  • “echo”等内部命令要求作业以“CMD.EXE / c”
  • 开头
  • 在括号内分组多个命令,并用&符号(&)
  • 分隔
  • 不要碰撞文件访问权限。我使用testout.txt和testout2.txt文件。如果我给他们起了同样的名字,就会失去一组输出。
  • 用户无法看到您这样做的任何内容;该作业以无法在用户屏幕上显示的方式运行。
  • 如我在示例中所示,以明文形式发送密码存在安全隐患,应予以避免。但是,我不确定在这种情况下映射驱动器的更好方法。