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

Cmdlet(Power Shell) 본문

Study

Cmdlet(Power Shell)

runardor 2016. 12. 21. 22:24

요즘 파워쉘을 이용한 악성코드가 많이 나오고 있어.. 파워쉘 관련해서 공부한 내용을 정리하고자 합니다.



파워쉘을 긴시간 많이 보진 않았지만... 정말 강력한 기능이 많아.. 잘쓰면 참 재밌는 도구인거 같습니다.



일단 파워쉘을 정리하기 전에 기본되는 개념을 좀 정리하고자 합니다.


파이썬 공부할때.. 기본 개념이나 객체에 대해 정리가 안되서 그냥 막썼던 기억이 있어서... 정리하고 가면 편하지 않을까.. 싶습니다.



일단 파워쉘에서 Cmdlet이라는 개념의 용어가 있습니다.



Cmdlet은 파워쉘에서 제공하는 Core Command로 WMI나 COM 인터페이스에 명령을 하여 서비스를 받는 명령어 집합이라고 생각하면 편합니다.


COM 객체도 .. 추후 좀 심도있게 정리하 필요할듯...



일단 추천 사이트 : http://ss64.com/ps/ ( 여기좀 짱인듯... Command가 다 정리되있음 !!)


위의 추천사이트에 파워쉘에서 제공하는 명령어들을 자세히 볼수 있지만.. 사실 위의 사이트 말고도 파워쉘 내부에 help 형태의 메뉴얼이 더 자세히


나와있으므로 메뉴얼을 참고하는게 더 정확하게 보입니다. 물론 예제는 위의 사이트가 더 좋은듯



아래서 설명할 명령어를 퀵하게 정리하면 아래와 같습니다.


get-command : 파웨쉘에서 제공하는 커맨드 전부 보여줌

get-command -CommandType Cmdlet : Cmdlet 만 보여줌 ( 커맨드 타입에 따라 보여줌 )

get-command -name <검색할 cmdlet 이름> | Format-List * : 명령어별 상세 정보 출력



파워쉘에서 명령어를 보는 명령어는 “get-command”으로 해당 명령을 치면 파워쉘에서 제공하는 Function, Cmdlet, Alias 의 리스트를 보여줍니다.


아래의 화면은 "get-command" 명령만을 친 화면



여기서 “get-command -CommandType Cmdlet” 명령을 치게되면 Cmdlet 만을 보여주게 됩니다.



해당 명령은 단순하게 Cmdlet 리스트만 보여주기 때문에 해당 명령의 상세 정보를 보기 어렵습니다. 사실 이게 젤 중요하죠!!!! 별 100개짜리!!!


상세 명령은 다음과 같습니다.

get-command -name <검색할 cmdlet 이름> | Format-List *


일단 먼저 설명을 안했지만 아래와 같은 내용이 있으니 그냥 읽어보시면 됩니다. 


1. 파워쉘은 기본적으로 파이프로 실행 결과를 Input으로 다음으로 넘길수 있으며 이는 리눅스와 거의 같다고 보시면 됩니다.

2. get-command 명령어는 인자로 name을 받아서 실행할 수 있다.


간단하게 위의 명령을 풀면 아래와 같습니다. -name의 인자로 받은 cmdlet 명령어의 정보를 가져와서 Format-List라는 Input으로 넣어 실행하는데 Format-List는 출력을 상세하게 해주는 명령입니다.


Format-List말고 Wide나 다른 명령들이 있습니다. < 검색 gogo!! >


명령이 수행되면 아래와 같이 해당 명령어에 대한 상세 내용이 출력됩니다.


예제는 get-command 명령에 대한 상세 내용을 출력하였습니다. 명령어를 보는 get-command도 파워쉘에서 제공하는 명령입니다.



해당 함수를 보면 Verb, Noun, Parameter, Parameter별 들어가는 데이터를 알 수 있습니다. 이 DATA는 대충 알고 넘어가도 되겠지만 Pipe 형태로 DATA를 파라미터로 넘기거나


매개변수로 단순 변수가 아닌 오브젝트 배열들이 들어가는지 알 수 있으므로 제대로 잘 쓰려면 위의 내용을 잘 보면서 파워쉘을 작성하면 매우 강력하게 사용합니다.


실제 파워쉘 작성시 에러가 날 경우 에러 원인을 파악할때도 인자 문제인 경우 어떤 인자들을 주고 받는지 꼭 살펴보아야 합니다.



파워쉘에서 사용하는 타입에 대해서는 따로 정리하도록 하겠습니다.


감사합니다.

Comments