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-ID: 305457

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

129413
Lösung 129413 26.05.2016 aktualisiert um 18:25:58 Uhr
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
colinardo
Lösung colinardo 26.05.2016 aktualisiert um 19:13:52 Uhr
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
Tobiased
Tobiased 27.05.2016 um 08:52:00 Uhr
Goto Top
Ah vielen dank, funktioniert einwandfrei face-smile