从 java 代码执行 cmd 时出现问题
Issue while executing cmd from java code
我有一个要求,我想通过以下方式查看远程服务器上所有 运行 服务的状态
执行一些 java 程序。
为此,我尝试使用 cmd 的服务控制器功能。
当我从命令提示符执行以下命令时,它工作正常-
sc \RemoteServerName queryex 类型=服务状态=全部
但是当我尝试从 java 程序执行相同的命令时它不起作用。以下是
java代码
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "sc \RemoteServerName queryex type= service state= all");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
System.out.println(line);
}
它returns像这样-
错误:无法识别的命令
描述:
SC 是一个命令行程序,用于与
服务控制管理器和服务。
是否需要为远程服务器上的 运行 命令传递任何特殊参数?
对这些家伙有什么想法吗?
谢谢
您缺少服务器名称中的第二个 \
。
运行 您粘贴的命令显示的错误与您在命令 window.
中看到的错误相同
来自 sc
帮助:
DESCRIPTION:
SC is a command line program used for communicating with the
Service Control Manager and services.
USAGE:
sc [command] [service name] ...
The option <server> has the form "\ServerName"
Further help on commands can be obtained by typing: "sc [command]"
您的命令显示缺少斜线 sc \RemoteServerName queryex type= service state= all
改成这样:
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "sc \\RemoteServerName queryex type= service state= all");
它应该可以正常工作。
我的输出(由于显而易见的原因不会 return 正确的结果)显示 sc
命令正常工作。
[SC] OpenSCManager FAILED 1722:
The RPC server is unavailable.
我有一个要求,我想通过以下方式查看远程服务器上所有 运行 服务的状态 执行一些 java 程序。
为此,我尝试使用 cmd 的服务控制器功能。
当我从命令提示符执行以下命令时,它工作正常-
sc \RemoteServerName queryex 类型=服务状态=全部
但是当我尝试从 java 程序执行相同的命令时它不起作用。以下是 java代码
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "sc \RemoteServerName queryex type= service state= all");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
System.out.println(line);
}
它returns像这样- 错误:无法识别的命令
描述: SC 是一个命令行程序,用于与 服务控制管理器和服务。
是否需要为远程服务器上的 运行 命令传递任何特殊参数? 对这些家伙有什么想法吗? 谢谢
您缺少服务器名称中的第二个 \
。
运行 您粘贴的命令显示的错误与您在命令 window.
中看到的错误相同来自 sc
帮助:
DESCRIPTION: SC is a command line program used for communicating with the Service Control Manager and services.
USAGE: sc [command] [service name] ...
The option <server> has the form "\ServerName" Further help on commands can be obtained by typing: "sc [command]"
您的命令显示缺少斜线 sc \RemoteServerName queryex type= service state= all
改成这样:
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "sc \\RemoteServerName queryex type= service state= all");
它应该可以正常工作。
我的输出(由于显而易见的原因不会 return 正确的结果)显示 sc
命令正常工作。
[SC] OpenSCManager FAILED 1722:
The RPC server is unavailable.