ProcessBuilder - Syntax für komplexere Kommandozeilenbefehle unter Windows

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ProcessBuilder - Syntax für komplexere Kommandozeilenbefehle unter Windows

    Hallo,

    Ich habe folgendes Problem/Aufgabe:

    Ich möchte mittels Java folgenden Befehl über die Windowsbefehlszeile ausführen und danach die Ausgabe auslesen.

    Quellcode

    1. wmic /node: <PCNAME> computersystem get Username


    Mit diesem Befehl kann man den gerade angemeldeten User an einem PC im Netzwerk ermitteln. <PCNAME> ist dabei eine beliebige Stringvariable.

    Ich habe diesen Befehl bereits erfolgreich unter Windows getestet. Außerdem habe ich mir folgendes kleines Programm dazu geschrieben:

    class: Test.java

    Quellcode

    1. package data;
    2. import java.io.BufferedReader;
    3. import java.io.IOException;
    4. import java.io.InputStreamReader;
    5. public class Test {
    6. public static void Test() {
    7. String line;
    8. ProcessBuilder processBuilder = new ProcessBuilder("wmic ","/node:","phoenix","computersystem");
    9. Process process = null;
    10. try {
    11. process = processBuilder.start();
    12. } catch (IOException e2) {
    13. e2.printStackTrace();
    14. }
    15. BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    16. BufferedReader bufferedReaderError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
    17. /*try {
    18. while ((line = bufferedReaderError.readLine()) != null) {
    19. System.out.println(line);
    20. }
    21. } catch (IOException e) {
    22. e.printStackTrace();
    23. }*/
    24. try {
    25. while ((line = bufferedReader.readLine()) != null) {
    26. System.out.println(line);
    27. }
    28. } catch (IOException e) {
    29. e.printStackTrace();
    30. }
    31. try {
    32. while ((line = bufferedReader.readLine()) == "3") {
    33. System.out.println(line);
    34. }
    35. } catch (IOException e) {
    36. e.printStackTrace();
    37. }
    38. }
    39. }
    Alles anzeigen

    class: Start.java

    Quellcode

    1. package data; public class Start { public static void main(String[] args) { Test.Test(); } }

    Das Konstrukt schmeisst mir zwar nen Fehler, aber der ist nicht so wichtig weil er erst nach der Ausgabe meines Befehls auftritt.

    Mein wirkliches Problem liegt, denke ich, an der Schreibweise des Befehls in:

    Quellcode

    1. ProcessBuilder processBuilder = new ProcessBuilder("wmic ","/node: Phoenix ", "computersystem get Username");

    Hab schon mehrere Schreibweisen des in Klammern stehenden Codes ausprobiert ohne etwas passendes zu finden und bekomme immer wieder die Meldung das das Alias nicht gefunden werden konnte.

    Daher denke ich, das ich den Befehl an der Stelle irgendwie falsch schreibe. Hat der jemand eine Idee wie ich das richtig schreiben muss, oder einen Tipp wo ich nachsehen könnte?