부동산, 채권, 주식, 경제흐름 자료를 모아 보는 블로그입니다.

Command 실행시 매개변수 잘 써보자! (Power shell) 본문

Study

Command 실행시 매개변수 잘 써보자! (Power shell)

runardor 2016. 12. 21. 23:47

파워쉘 명령어 실행시 좀더 강력하게 쓰기 위해서 Command 실행시 매개변수를 잘 써보자!!입니다.



get-process -name <프로세스명> 이렇게 사용하면 사실 크게 문제가 없습니다.



근데 앞서 설명한 내용중 "get-processs" Command를 사용하여 받은 객체를 변수에 저장해서 get-process에 넘기려면 어떻게 해야할까요??



"get-process" Command의 상세 내용은 위와 같습니다.


parameter를 보게되면 -Name 인자로 String[]을 받게됩니다. 사실 String 배열이지만 하나의 String만 써도 잘 동작합니다..... 그렇습니다. 여러개의 String을 배열로 받아도 실행이 된다는 의미입니다. 여러개의 배열로 받으면 배열로 받은 문자열 별로 프로세스 객체를 만들어서 리턴해줍니다. 출력될때도 마찬가지입니다.



만약 아래의 명령을 실행하면 실행이 될까요?


실행될 명령어 : 

$a = get-process -name WINWORD 

get-process $a


에러를 뱉어냅니다.!!


근데 달리 생각해보아야 할 부분이 있습니다.


앞에서 확인한 get-process -name WINWORD | get-process 는 잘 실행됩니다.



왜이럴까요????


Command에 의해 변수에 저장될때는 객체가 프로세스 객체인데 파이프로 넘어갈때는 프로세스 객체가 넘어가는게 아닙니다.


위의 명령을 보면 Name의 매개변수로 "System.Diagnostics.Process (WINWORD)"가 넘어가는것이므로 해당 프로세스가 없다는 명령이 출력됩니다.


파이프때랑 다르게 처리해주어야 합니다.


get-process -name 'System.Diagnostics.Process (WINWORD)' 명령을 수행했을때랑 오류가 같음을 확인 할 수 있습니다.



그럼 a변수를 이용해서 출력이 불가능한가?? 라고 물어보면 그건 또 아닙니다.


다음과 같이 명령을 치면.. 출력이 됩니다.



get-process 의 매개변수중 inputobject는 인자로 processs[]를 받음을 확인 할 수 있습니다. 프로세스 객체 배열을 받습니다. 물론 1개도 가능합니다.

( asdsvc 프로세스 출력을 위해 만들어논 화면으로 WINWORD로 하여도 상관없습니다. )



이번 장은 설명을 위해 일부러 위와 같은 예를 쓴것으로 그냥 단순하게 get-process -name 과 같이 쓸 수도 있는 명령들도


변수에 저장하거나 가공을 할때 위와같이 잘 응용해서 쓸 수 있다는것을 알려드리기 위해 설명 드렸습니다.


여기서 그럼 추가적으로 Process[] 배열을 인자로 받는다는 것을 한번 코드로 짜서 보여드리겠습니다.


명령은 아래와 같습니다.

$a = get-process -name asdsvc

$c = get-process -name WINWORD

$d = @($a,$c)

get-process -inputobject $d


명령어 설명

$a = get-process -name asdsvc   (  "asdsvc" 프로세스 객체를 a에 저장 )

$c = get-process -name WINWORD (  "WINWORD" 프로세스 객체를 c에 저장)


$d = @($a,$c) : 변수 d에 $a와 $c를 배열로 저장

get-process -inputobject $d : "get-process" command 실행 매개변수는 inputobject $d




명령이 정상적으로 실행되면 process 배열에 들어가있는 asdsvc와 WINWORD에 대한 프로세스 정보가 같이 출력되게 됩니다...


간단한 내용이지만 위의 내용을 잘 숙지하시면 파워쉘 스크립트의 길이를 크게 줄일 수 있습니다.



추가적으로 객체들의 DATA를 이용해서 아래와 같이 사용도 가능합니다.




감사합니다.


'Study' 카테고리의 다른 글

RSA 2048 Key 생성  (0) 2017.06.07
Process BaseAddress 구하기  (0) 2017.06.02
파이프로 매개변수 넘겨주기(Power Shell)  (0) 2016.12.21
Cmdlet(Power Shell)  (0) 2016.12.21
WMI (Windows Management Instrumentation)  (0) 2016.08.22
Comments