java - 通过从 Java 执行 PowerShell 脚本来终止服务

标签 java powershell cmd

我正在尝试使用 Java Runtime 类执行 PowerShell 脚本,但由于某种原因没有任何反应。我还尝试将 CMD 输出发送到我的 Java 代码,但没有成功。这是我的代码:

private void connectToServer() {
    executeCmdCommand("cd C:/PSTools");// navigate to psTools directory
    executeCmdCommand("PsExec.exe //<server1> -u orgnization/user_qa -p      sdsad1212 cmd");// connect the server machine
    executeCmdCommand("powershell.exe C:/powerShell/stop-process.ps1 MainRls");// stopr service by execute powershell script
}

/**
* execute cmd commands
*/
private void executeCmdCommand(String command){
    try {
        ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", command);
        Process process = builder.start();
        BufferedReader inputStream = new BufferedReader(new InputStreamReader(process.getInputStream()));
        Report.assertOnReport(inputStream.readLine());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

当我从 CMD 手动执行相同的命令时,服务成功终止,但当由 Java 代码执行时它什么也不做。

最佳答案

这些命令在您手动执行时起作用,因为第二个命令在远程主机上打开一个交互式 shell,并且您在远程主机上的该 shell 中输入第三个命令。您的 Java 代码不是这样工作的,因为它单独运行这两个命令。因此,您需要直接使用 PsExec 运行 PowerShell 命令:

executeCmdCommand("PsExec.exe //<server1> -u orgnization/user_qa -p sdsad1212 C:/windows/system32/WindowsPowerShell/v1.0/powershell.exe -File C:/powerShell/stop-process.ps1 MainRls");

关于java - 通过从 Java 执行 PowerShell 脚本来终止服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39064304/

相关文章:

java - 数据集合的最佳数据结构,每次迭代之间仅发生变化

java - 支柱 2 : Cannot create a session after the response has been committed

excel - Powershell 函数如何指定 ComObject 参数类型?

windows - 如何从 Get-ChildItem 获取所有可执行文件的路径

powershell - 使用 powershell 将项目从一个资源组复制到 Azure 数据湖存储中的另一个资源组

Windows CMD 使用转义序列写入文件

java - java中使用amf3input反序列化amf二进制格式

java - JSP页面中的 vector

batch-file - 批量复制所有文件而不覆盖

batch-file - 如何在 Windows 上使用 cmd 找到屏幕亮度?