如何使用 WMIC 从远程服务器启动应用程序

Posted

技术标签:

【中文标题】如何使用 WMIC 从远程服务器启动应用程序【英文标题】:How to start an application from a remote server using WMIC 【发布时间】:2019-08-21 21:03:43 【问题描述】:

在 Windows 7 中,我试图在远程服务器上打开一个应用程序,我不想使用 Powershell 或 PSexec。我尝试使用以下代码在远程服务器上打开 Firefox,但收到 ReturnValue = 0 但 Firefox 从未启动。

WMIC.exe /node:ComputerName process call create "cmd.exe /C C:\Program Files\Mozilla Firefox\firefox.exe"

返回值 = 0

【问题讨论】:

你考虑过路径中的空间吗? 如果你在/C之间引用 C: 已经有一个空格我还添加了另一个空格我仍然得到相同的错误代码。 他说的是ProgramFiles之间的空格。但更优雅的解决方案可能是像wmic /node:computername process call create "cmd /c start firefox" 一样启动它。使用cmd 的内部start 命令将在App Paths 中定位Firefox,因此您不必指定完整路径\\to\\executable。 我已经删除了程序和无效文件之间的空间。我还尝试了您的代码,但仍然无法正常工作。两种情况都返回值为 0 但 Firefox 启动失败。 我们从未建议您删除空间。您在 Windows 7 机器上登录到 Windows 的帐户是否也具有服务器上的管理员权限?如果没有,您可能需要将/user:/password: 开关添加到您的wmic 命令中。 【参考方案1】:

您的代码的问题是生成的cmd 进程找不到名为c:Program 的程序。这是因为您没有引用将完整路径保留为单个标记,并且您没有转义反斜杠。

要修复现有行,请在 Firefox 路径周围添加反斜杠转义引号。此外,在 wmic 的 WQL 参数中,文字反斜杠必须加倍。

wmic /node:server process call create "cmd /C \"C:\\Program Files\\Mozilla Firefox\\firefox.exe\""

不过,更好的解决方案是使用 cmd 的内部 start 命令在 App Paths 中查找 Firefox,这样您就不必指定完整路径\to\executable。

wmic /node:server process call create "cmd /c start firefox"

【讨论】:

我已将您的代码与双反斜杠一起使用,但它不起作用。返回值 = 0 @drive 返回值 = 0 应为预期。这意味着没有错误。服务器是否登录到其桌面?您是否尝试使用与登录到服务器桌面环境相同的用户帐户来启动 Firefox?您的计算机是域的成员吗? 我可以远程停止服务并重新启动它们。我确实有访问权限。服务器在桌面上。我正在使用相同的用户帐户,即管理员。两台服务器都在网络上。 0 表示cmd 已启动。你为什么把它叫做你想叫firefox?所有远程程序都是不可见的。你怎么知道它没有开始? 你是对的 Firefox 是不可见的,但我想做的是启动程序。 Firefox 就是一个例子。

以上是关于如何使用 WMIC 从远程服务器启动应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用wmic.exe绕过应用程序白名单(多种方法)

“由于远程桌面服务正忙,因此无法完成你尝试执行的任务,请在几分钟后重试,其他用户应该任然能够登录,

Windows Server 2016 怎么重新启动远程服务器

Windows Server 2016 怎么重新启动远程服务器

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

如何通过SSH在远程Linux服务器上启动GUI软件?