1

长话短说,我编写了一个程序,允许我在 Windows 机器上远程安装软件和运行命令。我一直在使用 START 命令(我从此处找到的关于 stackoverflow 的另一篇文章中了解到)通过 RPC 执行批处理文件,这样我的服务器就不必等待安装完成。它在我为其编写此代码的学区的 1000 台计算机中的大多数计算机上运行良好,但我有几台计算机 START 不运行批处理文件。我没有收到任何错误消息,并且我所做的所有搜索只找到了更多关于如何使用 START 命令的示例。我找不到任何对它的引用,只是没有运行。

我的服务器是 linux 并且正在使用 winexe 进行 RPC。这是我正在运行的命令。

winexe -W domain -U adminUser --password=adminPassword //compName.domain.internal --runas=domain\\adminUser%adminPassword "\\\\Server\\PathToBatch\\run.cmd \\\\Server\\PathToBatch\\install.cmd"

run.cmd 代码如下。

START %1
exit

install.cmd 批处理文件由我的程序根据他们要安装的内容生成。命令中多余的 \s 是转义字符,因为 \ 是 linux 中的转义字符。

我得到的输出是。

C:\WINDOWS\system32>start \\Server\PathToBatch\install.cmd 
C:\WINDOWS\system32>exit

没有错误消息,并且在正确启动的计算机上输出相同。

我已经尝试从机器上的命令提示符运行命令,就像它通过 RPC 运行一样,它工作正常。我可以使用 RPC 自行运行 install.cmd,它工作正常,除了我必须等待安装完成。完全相同的批处理文件可以在其他计算机上运行而不会出现问题。

在工作的计算机上观看任务管理器,我可以看到 adminUser 启动运行的 cmd 进程,然后启动第二个 cmd 进程,第一个进程消失。在非工作计算机上,它启动第一个 cmd 进程并在没有启动第二个 cmd 进程的情况下消失。

我无法找到工作计算机和非工作计算机之间的任何区别。计算机上没有防火墙。

我们将在暑假期间对这些计算机进行重新成像,我预计它们可能会在那之后开始工作,所以我并不急于解决这个问题。我主要想知道它为什么不工作,这样我就可以防止它将来在其他机器上失败。

提前感谢您能给我的任何帮助。

4

1 回答 1

0

尝试start "" %1代替start %1. 还要仔细检查 runas 用户是否可以实际访问\\Server\PathToBatch命令失败的机器。

于 2013-05-12T00:08:09.157 回答