使用 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 文件的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在远程计算机上为 MicrosoftTPM 命名空间查询 WMI? [对 Win32_Tpm 类的远程 WMI 查询失败,HRESULT 0x80041013]