2013-07-22 3 views
0

java를 사용하여 powershell 명령을 호출하는 방법.powershell 명령을 실행하는 동안 오류가 발생했습니다.

try { 
     ExecuteWatchdog watchdog = new ExecuteWatchdog(20000); 
     Process powerShellProcess = Runtime.getRuntime().exec(
       "powershell.exe \"D:\\testscript.ps1\""); 
     if (watchdog != null) { 
      watchdog.start(powerShellProcess); 
     } 
     BufferedReader stdInput = new BufferedReader(new InputStreamReader(
       powerShellProcess.getInputStream())); 
     String line; 
     System.out.println("Output :"); 
     while ((line = stdInput.readLine()) != null) { 
      System.out.println(line); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

참고 : 올바른 경로를 매핑합니다.

나는 위의 코드와 노력하지만 당신이에 도움을 주시기 바랍니다 수

java.io.IOException: Cannot run program "powershell.exe": CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:459) 
    at java.lang.Runtime.exec(Runtime.java:593) 
    at java.lang.Runtime.exec(Runtime.java:431) 
    at java.lang.Runtime.exec(Runtime.java:328) 
    at com.powershell.PsJava.main(PsJava.java:17)) 

누구나 같은 오류를 제공합니다.

+1

1) [Runtime.exec()이 실행되지 않을 때] (* http://www.javaworld.com/jw-12-2000/jw-1229-traps)의 권장 사항을 모두 읽고 (구현하고) 구현하십시오. html). 그게 문제를 해결할 수도 있습니다. 그렇지 않은 경우 실패한 이유에 대한 자세한 정보를 제공해야합니다. 그런 다음'exec'를 참조하고'ProcessBuilder'를 사용하여'Process'를 빌드한다는 것을 무시하십시오. 또한'String arg'를'String [] args'로 분해하여 그들 자신이 공백을 포함하는 인수를 설명하십시오. 2) 제목에 주요 태그를 추가 할 필요가 없습니다. –

+0

파일을 찾을 수 없습니다. ''powershell.exe ''를''C : \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe ''로 변경하십시오. – Cole9350

+0

감사합니다 @ Cole9350, 문제가 해결되었습니다. – Sathiya

답변

1

환경 변수가 항상 Java 컴파일러에 노출되지는 않습니다. 스택 오류는 $ PSHOME var을 자동으로 알지 못하기 때문에 powershell 실행 파일을 찾을 수 없다는 것을 알려주는 것입니다. 당신은 자바에서 ProcessBuilder를 사용하여 PowerShell 명령을 실행할 수 있습니다 "powershell.exe"

0

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
변경 :

수정은 전체 경로를 지정하는 것입니다.

ProcessBuilder builder = 
    new ProcessBuilder("powershell.exe", "/c", "Get-Process"); 
Process p = builder.start(); 
0

PowerShell을 실행 당신의 경로에 인 경우에 당신이 실수로 Use secret text(s) or file(s)특정 사용자 이름 암호 자격 증명을 Build Environment 섹션에서로 선택하지 않은 있는지 확인하십시오. 이유는 모르겠지만 이것이 노예를 짓기 위해이 문제를 일으키는 것 같았습니다!

관련 문제