tobiased
Goto Top

Werte Übergabe bei Runtime.getRuntime().exec()

Hallo Zusammen,

ich möchte via Java ein Power Shell Script ausführen. Das funktioniert mit Runtime.getRuntime().exec("powershell.exe C:/temp/test.ps1") auch wunderbar. Nun möchte ich wissen, gibt es eine Möglichkeit einen Wert mit zu übergeben? Diesen möchte ich dann in eine Power Shell Variable speichern, welche ich dann wiederum im Script verwenden möchte.

Gruß Tobias

Content-Key: 305457

Url: https://administrator.de/contentid/305457

Printed on: April 18, 2024 at 19:04 o'clock

Mitglied: 129413
Solution 129413 May 26, 2016 updated at 16:25:58 (UTC)
Goto Top
Im Powershell-Skript machst du folgendes im Kopf:
param(
    $param1,
    $param2
)
write-host $param1
write-host $param2
Dann kannst du deinem Powershell-Skript die Parameter auf der Kommandozeile mit übergeben
"powershell -File C:\script.ps1 Parameter1 Parameter2"

Gruß skybird
Member: colinardo
Solution colinardo May 26, 2016 updated at 17:13:52 (UTC)
Goto Top
Wie @129413 schreibt die Parameter-Deklaration oben in dein Skript schreiben
param(
    $param1,
    $param2
)
write-host $param1
write-host $param2
und dann dazu passend ein Demo-Java-Skript:
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class test {
    public static void main(String args) {
        try{
            // Pfad zum Skript
            String path = "C:\\demo.ps1";  
            // Parameter zur Übergabe an das Powershell-Skript
            String p1 = "Mein erster Parameter";  
            String p2 = "Mein zweiter Parameter";  
            // Kommandozeile zusammensetzen
            String cmd = "powershell.exe -File \"" + path + "\" \"" + p1 + "\" \"" + p2 + "\"";  
            // CMD ausführen
            Process p = Runtime.getRuntime().exec(cmd);
            // warten bis er zu Ende ist
            p.waitFor();
            // Konsolenausgabe abfangen und in der Debug-Konsole ausgeben ---------------
            StringBuffer output = new StringBuffer();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = "";  
            while ((line = reader.readLine())!= null) {
                output.append(line + "\n");  
            }
            System.out.println("Output des Powershell-Skripts:\n" + output);  
            // ---------------------------------------------------------------------------

        }catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }
}
Grüße Uwe
Member: Tobiased
Tobiased May 27, 2016 at 06:52:00 (UTC)
Goto Top
Ah vielen dank, funktioniert einwandfrei face-smile