【Java】Java调用powershell JPowershell的使用

目录

前言

一、基本准备

二、编码

三、完整代码

结语

前言

        java调用powershell的简单使用。

一、基本准备

  • 开发语言:Java
  • 操作系统:Windows10(建议Win7版本以上,如果在Win7上使用,需要更新powershell的版本)
  • JDK:8
  • 项目构建:Maven工程
  • 依赖:Jpowershell

二、编码

1. 创建普通的Maven工程

2.  Maven配置阿里云镜像仓库

<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>  

3. maven仓库搜索JPowershell依赖

https://mvnrepository.com/

 我就选最新的版本了

 

 引入依赖

    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.profesorfalken/jPowerShell -->
        <dependency>
            <groupId>com.profesorfalken</groupId>
            <artifactId>jPowerShell</artifactId>
            <version>3.1.1</version>
        </dependency>
    </dependencies>

4. 测试

4.1 执行单条powershell命令

需求:获取所有进程信息,并显示前5条

 结果

    public static void execSingleCmd(){
        // 开始时间
        long stime = System.currentTimeMillis();


        //1.要执行的命令
        String cmd = "Get-Process | Select-Object -First 5";
        //2.调用 executeSingleCommand 静态方法执行单条命令
        PowerShellResponse powerShellResponse = PowerShell.executeSingleCommand(cmd);
        // 3.获取结果输出
        System.out.println(powerShellResponse.getCommandOutput());


        // 结束时间
        long etime = System.currentTimeMillis();
        System.err.println("程序执行了 "+((etime-stime)/1000)+" s");
    }

 4.2 执行多条powershell命令

多条powershell命令演示

结果

 

/**
     *
     * 多条powershell命令演示
     * 1. 进入 D:\
     * 2. 创建一个文件夹 mkdir ps_test
     * 3.将 powershell版本信息输入到 a.txt文件中
     *
     */
    public static void execMulCmd(){
        // 开始时间
        long stime = System.currentTimeMillis();


        //1.打开一个powershell会话
        PowerShell ps = PowerShell.openSession();
        ps.executeCommand("cd \\");
        //2.进入 D:\
        ps.executeCommand("D:");
        //3.创建一个文件夹
        ps.executeCommand("mkdir ps_test");
        ps.executeCommand("cd ps_test");
        //4.将 host 信息写入 a.txt
        ps.executeCommand(" host > a.txt");
        //5.关闭powershell
        ps.close();
        System.out.println("ps command exec success!");


        // 结束时间
        long etime = System.currentTimeMillis();
        System.err.println("程序执行了 "+((etime-stime)/1000)+" s");
    }

看的出来,以上仅显示和输出内容到文件的操作,程序执行的时间 “非常可观”。估计再写几行代码,就可以让他执行一天了(轻松摸鱼)。性能问题布吉岛如何解决,只能先这样了。或者有大佬给个解决方案,在下洗耳恭听。

三、完整代码

package com.jp.test;

import com.profesorfalken.jpowershell.PowerShell;
import com.profesorfalken.jpowershell.PowerShellResponse;

public class PowerShellTest {


    public static void main(String[] args){
//        execSingleCmd();
        execMulCmd();
    }

    /**
     * 执行单条powershell命令,获取所有进程信息,且只显示前5条数据
     *
     */
    public static void execSingleCmd(){
        // 开始时间
        long stime = System.currentTimeMillis();


        //1.要执行的命令
        String cmd = "Get-Process | Select-Object -First 5";
        //2.调用 executeSingleCommand 静态方法执行单条命令
        PowerShellResponse powerShellResponse = PowerShell.executeSingleCommand(cmd);
        // 3.获取结果输出
        System.out.println(powerShellResponse.getCommandOutput());


        // 结束时间
        long etime = System.currentTimeMillis();
        System.err.println("程序执行了 "+((etime-stime)/1000)+" s");
    }


    /**
     *
     * 多条powershell命令演示
     * 1. 进入 D:\
     * 2. 创建一个文件夹 mkdir ps_test
     * 3.将 powershell版本信息输入到 a.txt文件中
     *
     */
    public static void execMulCmd(){
        // 开始时间
        long stime = System.currentTimeMillis();


        //1.打开一个powershell会话
        PowerShell ps = PowerShell.openSession();
        ps.executeCommand("cd \\");
        //2.进入 D:\
        ps.executeCommand("D:");
        //3.创建一个文件夹
        ps.executeCommand("mkdir ps_test");
        ps.executeCommand("cd ps_test");
        //4.将 host 信息写入 a.txt
        ps.executeCommand(" host > a.txt");
        //5.关闭powershell
        ps.close();
        System.out.println("ps command exec success!");


        // 结束时间
        long etime = System.currentTimeMillis();
        System.err.println("程序执行了 "+((etime-stime)/1000)+" s");
    }
}

结语

以上就是Java程序调用Windows Powershell 的实现,如果你也有这个需求,那么希望能帮到你。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值