2016-08-21 2 views
0

Java Runtime 클래스를 사용하여 PowerShell 스크립트를 실행하려고하지만 어떤 이유로 아무 일도 일어나지 않습니다. 또한 Java 코드로 CMD 출력을 얻으려고 시도하지만 성공하지는 못합니다. 이건 내 코드입니다 : 내가 CMD에서 동일한 명령을 실행할 때서비스 종료 Java에서 PowerShell 스크립트를 실행하여

private void connectToServer() { 
    executeCmdCommand("cd C:/PSTools");// navigate to psTools directory 
    executeCmdCommand("PsExec.exe //<server1> -u orgnization/user_qa -p  sdsad1212 cmd");// connect the server machine 
    executeCmdCommand("powershell.exe C:/powerShell/stop-process.ps1 MainRls");// stopr service by execute powershell script 
} 

/** 
* execute cmd commands 
*/ 
private void executeCmdCommand(String command){ 
    try { 
     ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", command); 
     Process process = builder.start(); 
     BufferedReader inputStream = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     Report.assertOnReport(inputStream.readLine()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

수동으로 서비스가 성공적으로 종료하지만, 자바 코드에 의해 실행되는 경우는 아무것도하지 않는 것.

+0

PowerShell 스크립트 실행 정책을 확인 했습니까? 기본 설정에는 서명 된 스크립트가 필요합니다. Powershell 프롬프트를 열고 다음을 입력하십시오 :'Set-ExecutionPolicy RemoteSigned' 또는'Set-ExecutionPolicy Unrestricted' –

답변

2

두 번째 명령은 원격 호스트에서 대화 형 셸을 열고 원격 호스트에서 세 번째 명령을 해당 셸에 입력하기 때문에 명령을 수동으로 실행할 때 작동합니다. Java 코드가 두 명령을 개별적으로 실행하므로 Java 코드가 작동하지 않습니다. 따라서 PsExec과 함께 PowerShell 명령을 직접 실행해야합니다.

executeCmdCommand("PsExec.exe //<server1> -u orgnization/user_qa -p sdsad1212 C:/windows/system32/WindowsPowerShell/v1.0/powershell.exe -File C:/powerShell/stop-process.ps1 MainRls"); 
+0

시도해 봤지만 서버 연결 후 Powershell 스크립트를 실행하지 않습니다 – ALiAuto

+0

Java 래퍼없이 수동으로 시도 했습니까? –

+0

예, 수동으로 시도했지만 그 작업은 – ALiAuto

관련 문제