java远程调用 shell,使用JAVA在远程计算机上运行PowerShell

I want to run a powershell in some remote machine using java.

How can this be achieved.?

currently this code is not running the powershell command locally.!!

public void main() throws Exception{

String[] command = { /*"cmd.exe", "/C",*/ "powershell", "Command","&","echo '********** hello world ********'"};

String out;

ProcessBuilder processBuilder = new ProcessBuilder(command);

Process process = null;

try {

process = processBuilder.start();

Logger.getInstance().info("process started" );

} catch (IOException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

}

java.io.InputStream is = process.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

// create a reader for the return data from cmd.

StringBuilder sb = new StringBuilder();

// create a string builder to automate the string addition

try {

while ((out = br.readLine()) != null) {// build the input

// string from

// cmd.

sb = sb.append(out);

System.out.println(out);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

this code runs for indefinite time. without any output.

解决方案

You can try to run something like "invoke-command -computername Server1 -filepath c:\scripts\script.ps1"

Process p = new ProcessBuilder()

.inheritIO()

.command("invoke-command", "-computername", "Server1",

"-filepath", "C:\\scripts\\script.ps1").start();

p.waitFor();

but first of all make sure that this command work OK from command line.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值