使用 WMI 在远程计算机上执行 .cmd 文件

Posted

技术标签:

【中文标题】使用 WMI 在远程计算机上执行 .cmd 文件【英文标题】:Executing .cmd file on remote machine using WMI 【发布时间】:2015-10-30 11:19:57 【问题描述】:

我需要使用 WMIC 在远程机器上执行 .cmd 文件,我不能使用 ssh-power shell。 我尝试执行下面的代码 并在控制台上打印了以下内容:

C:\>WMIC/node:"remote-server01" process call create "cmd.exe /c C:\test.cmd"

Executing (Win32_Process)->Create()
Method execution successful.
Out Parameters:
instance of __PARAMETERS

        ReturnValue = 0;
;

但是在远程机器上什么都没有执行。

【问题讨论】:

为什么你的代码中C:` and test.cmd`之间有一个空格 它的 C:\test.cmd - 中间没有空格,输入错误 【参考方案1】:

由于进程创建失败并出现“找不到路径” 错误,远程计算机上没有执行任何操作,如documentation

中所述

返回值

如果进程创建成功,则返回值 0(零), 以及任何其他表示错误的数字。对于其他错误代码, 请参阅 WMI 错误常量或 WbemErrorEnum。对于一般 HRESULT 值, 请参阅系统错误代码。

成功完成 (0) 访问被拒绝 (2) 权限不足(三) 未知故障 (8)找不到路径 (9) 无效参数 (21) 其他 (22–4294967295)

“方法执行成功”是指调用方法,而不是创建进程。

【讨论】:

我试图修复它,现在它就像 Executing (Win32_Process)->Create() 方法执行成功。输出参数:__PARAMETERS ProcessId = 7984 的实例;返回值 = 0; ;远程机器 C:\Users\tiwaris> 上仍然没有执行任何操作 @aquesh,如果您有 ProcessId,则该进程已启动。尝试运行tasklist /fi "pid eq 7984"(您的进程ID)。如果该进程存在,它可能在单独的会话中运行。如果它不是pressent,可能它已经结束了。 它说没有任务正在运行:( 你有什么方法可以调用远程机器上的 cmd 文件,除了使用 ssh,我只需要使用命令行来执行它 @aquesh,如果你有进程 id,至少 cmd.exe 已启动。尝试运行一个只包含pause 的批处理文件以强制它等待并再次测试。您可以使用 Microsoft Sysinternals 工具中的psexec,但您必须从 Microsoft 下载它。无论如何,WMI 应该可以工作。

以上是关于使用 WMI 在远程计算机上执行 .cmd 文件的主要内容,如果未能解决你的问题,请参考以下文章

在远程计算机上模拟用户时 WMI 的访问被拒绝

如何获得在没有 WMI 的远程计算机上运行的进程的所有者

是否可以在远程计算机上为 MicrosoftTPM 命名空间查询 WMI? [对 Win32_Tpm 类的远程 WMI 查询失败,HRESULT 0x80041013]

在工作组中使用 WMI XP PC 进行远程管理

如何用批处理登录远程计算机上,执行另一个批处理文件?

如何使用 psexec 向远程计算机上启动的 cmd.exe 提供多个命令