개발하는데 java 배치로 Windows Powershell을 파라미터 방식으로 호출할 일이 생겼다. 일단 powershell Script 코드는 다음과 같다.
1
2
|
echo 'TEST-1' $test
echo 'TEST-2' $userid
|
cs |
대충 파라미터 두 개( test/userid)를 받아 echo로 찍어주는건데 기타 하위에는 물론 Azure Portal과의 통신이 있긴 하다. 근데 그게 중요한 것은 아니니까.
아무튼, java에서 파워쉘을 호출하는 소스코드는 다음과 같다.
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
|
//중략
final Runtime rt = Runtime.getRuntime();
//powershell.exe 명령어를 통해서, 해당 경로의 ps1 파일을 실행함
String commands = String.format("powershell.exe \"F:\\powershell.ps1 ");
Process proc = null;
String s = null;
// PowerShell 명령 시도 및 메시지 출력
try {
proc = rt.exec(commands);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream());
while (( s = stdInput.readLine()) != null ) {
System.out.println(s);
}
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream());
while (( s = stdError.readLine()) != null ) {
System.out.println(s);
}
} catch (IOException e) {
e.printStacTrace();
}
//생략
|
cs |
요기까지는 잘 했는데, 위의 powershell 코드와 같이 parameter를 넘기는 방법을 구글링해보아도 죄다 제각기 방법이 달라서, 츄라이를 해보니 다음과 같은 소스코드로 성공했다.
위의 java 소스에서 commands를 다음과 같은 방법으로 변경해주면 된다.
1
2
3
4
5
6
7
|
//중략
String[] arr = {"test_msg" , "test_user"}
//powershell.exe 명령어를 통해서, 해당 경로의 ps1 파일을 실행함
String commands = String.format("powershell.exe \"F:\\powershell.ps1 " + arr[0] + " " + arr[1]);
//생략
|
cs |
PowerShell 코드는 다음과 같이 수정해주면 된다.
1
2
3
4
5
|
$test = $args[0]
$userid = $args[1]
echo 'TEST-1' $test
echo 'TEST-2' $userid
|
cs |
java 에서 공백문자열로 구분된 string 값들이 args로 잘 매핑이 된다.
테스트를 해보니 해당 ps1(powershell)을 호출할 때 각 String 형태의 parameter(arguments)들을 넘길 때, 그냥 공백문자열로 구분하는 것으로 보인다. 실제로 여러방법으로 테스트 해보니 잘 되기도 하고. 이로써 java로 powershell script를 parameter 포함하여 execute 하는것에 성공했다. 앞으로 근데, 이러한 플젝을 몇번이나 할 지는 모르겠지만 말이다 =_=;;
java - how pass string array as a parameters to a powershell
'어장 Develop > 어장 JAVA' 카테고리의 다른 글
[SpringBoot] jasypt 적용 (0) | 2024.02.21 |
---|---|
[SpringBoot] mybatis를 활용한 DB Connection (0) | 2024.02.21 |
[hwplib] hwplib을 이용한 한글파일 텍스트 추출 (1) | 2022.07.06 |
[PDFBox] pdf 텍스트 추출 (0) | 2022.07.05 |
[poi] java poi 를 활용한 엑셀/워드 텍스트 추출 (0) | 2022.07.04 |