2013-04-15 2 views
0

Я пытаюсь использовать следующую программу, используя ProcessBuilder. Эта программа содержит локальный путь, но Я хочу вызвать тот же скрипт, расположенный в сети.Как вызвать скрипт powershell, расположенный в сети из Java-программы?

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.StringTokenizer; 

public class TestPowershell { 

    public static void main(String[] args) throws IOException 
    { 
     Runtime runtime = Runtime.getRuntime(); 
     //Process proc = runtime.exec("cmd.exe /c powershell.exe C:\\get-sevice-gsvc.ps1"); // old code 

     ProcessBuilder pb = new ProcessBuilder("powershell", "-file", "C:\\get-sevice-gsvc.ps1", "127.0.0.1"); 
     pb.redirectErrorStream(true); 
     Process proc = pb.start(); 

     InputStream is = proc.getInputStream(); 
     InputStreamReader isr = new InputStreamReader(is); 
     BufferedReader reader = new BufferedReader(isr); 
     String line; 
     try{ 


     while ((line = reader.readLine()) != null) 
     { 
      System.out.println(line); 

     } 
     reader.close(); 
     proc.getOutputStream().close(); 
     } 
     catch(Exception e){ 
      System.out.println(e.getMessage()); 
     } 

    } 

} 

Любые мысли?

+0

u хотите загрузить скрипт из сети и затем запустить его? Или отправьте запрос на сервер, чтобы сервер мог его запустить. – Jatin

+0

этот скрипт находится в удаленном окне, которое необходимо запустить, а затем обработать вывод в цикле while. Мне не нужно скачивать. В удаленном ящике нет приложения или сервера. Я имею в виду, что на удаленном компьютере нет приемника. Это простой Java-вызов для удаленного сценария powershell. – user617966

+0

У вас есть соединение с оболочкой на удаленной машине? Я имею в виду какие-то настройки ssh-соединений? – Jatin

ответ

0

Как я понимаю, вам нужен сценарий для запуска на ящике, на котором он находится. В этом случае это не так просто (в противном случае вы просто использовали бы сетевой путь, как вы уже указали). Если вы используете ProcessBuilder, тогда скрипт будет запущен на компьютере, где ваш Java-код выполняется независимо от того, где находится скрипт. Чтобы удаленно запускать сценарий, вы можете использовать PowerShell, так как он может подключиться к другому компьютеру и запустить там команды. В этом случае вы напишете простой сценарий PowerShell PowerShell, который вызывает исходный один удаленно, и запустите этот новый скрипт на вашем компьютере, используя ProcessBuilder вместо оригинального. Однако есть некоторые препятствия, которые необходимо предпринять. Большинство из них касаются прав пользователей. Потратьте время на изучение PowerShell документация для Выполнение удаленной команды или поиск StackOverflow или других мест для этой темы.

Смежные вопросы