Hallo,
Ich habe folgendes Problem/Aufgabe:
Ich möchte mittels Java folgenden Befehl über die Windowsbefehlszeile ausführen und danach die Ausgabe auslesen.
|
Source code
|
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
|
Java Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package data;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void Test() {
String line;
ProcessBuilder processBuilder = new ProcessBuilder("wmic ","/node:","phoenix","computersystem");
Process process = null;
try {
process = processBuilder.start();
} catch (IOException e2) {
e2.printStackTrace();
}
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader bufferedReaderError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
/*try {
while ((line = bufferedReaderError.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}*/
try {
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
while ((line = bufferedReader.readLine()) == "3") {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
|
class: Start.java
|
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:
|
Java 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?