Java通过socket接收指令,调用powershell的示例

不多说直接上代码,文末有整个demo的源码下载地址

socket服务端代码

public void run() {
        BufferedWriter writer = null;
        InputStream inputStream = null;
        try {
            // 设置连接超时5秒
            socket.setSoTimeout(5000);
            log.info("IDM连接成功");
            inputStream = socket.getInputStream();
            writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            boolean result = false;
            try {
                result = handle(inputStream);
                writer.write(String.valueOf(result));
                writer.newLine();
                writer.flush();
            } catch (IOException | IllegalArgumentException e) {
                writer.write("error");
                writer.newLine();
                writer.flush();
                try {
                    result = handle(inputStream);
                    writer.write(String.valueOf(result));
                    writer.newLine();
                    writer.flush();
                } catch (SocketTimeoutException ex) {
                    log.error("连接超时", ex);
                }
            }
        } catch (SocketException socketException) {
            log.error("连接超时", socketException);
            try {
                inputStream.close();
                writer.close();
            } catch (IOException ioException) {
                log.error("", ioException);
            }
        } catch (IOException e) {
            log.error("", e);
        } finally {
            try {
                inputStream.close();
                writer.close();
            } catch (IOException e) {
                log.error("", e);
            }
        }

    }

调用powershell

PowerShellResponse response = null;
Command command = getCommand(json);
PowerShell session = init(command.getUsername(), command.getPassword(),command.getIp());
if (session != null) {
    if (json.contains("Get-Mailbox") || json.contains("Enable-Mailbox")) {
        log.info("执行指令:" + command.getCommand());
        response = session.executeCommand(command.getCommand());
    }
}

exchange/powershell,Java调用powershell开通邮箱-Java文档类资源-CSDN下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java程序中执行PowerShell命令,可以使用Java的ProcessBuilder类来创建一个PowerShell进程,然后将命令作为参数传递给进程。 以下是一个示例代码,用于在Java调用PowerShell并执行命令: ``` import java.io.*; public class PowerShellExecutor { public static void main(String[] args) { // command to execute in PowerShell String command = "Get-Process | Select-Object Name, Id, CPU | Sort-Object -Descending -Property CPU"; // create PowerShell process ProcessBuilder processBuilder = new ProcessBuilder("powershell.exe", command); // set working directory (optional) processBuilder.directory(new File("C:/Users/Username/Desktop")); try { // start the process Process process = processBuilder.start(); // read output from PowerShell process InputStream inputStream = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } // close streams reader.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在这个示例中,我们创建了一个名为`PowerShellExecutor`的类,它包含一个名为`main`的方法,该方法在Java调用PowerShell并执行给定的命令。 首先,我们定义了要执行的PowerShell命令,即获取所有进程并按CPU使用率排序。 然后,我们使用`ProcessBuilder`类创建了一个PowerShell进程,并将命令作为参数传递给进程。我们还可以通过调用`processBuilder.directory`方法设置进程的工作目录。 接下来,我们启动了PowerShell进程,并通过从进程的输出流中读取数据来获取命令的输出。我们使用`BufferedReader`和`InputStreamReader`来读取输出流中的数据,并将其打印到控制台上。 最后,我们关闭了流并处理了任何可能的异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值