programming ⌨/파워쉘 PowerShell

나를 위한 PowerShell(1) : 콘솔과 명령

Kortsec1 2024. 2. 25. 16:13

주변을 보면 윈도 운영체제를 사용하는 사람이 굉장히 많은 것을 알 수 있다.

이러한 환경에서 PowerShell은 자동화 스크립트와 같이 우리 업무의 효율을 높여줄 수 있고,

운영체제의 기능들과 상호작용이 필요한 경우 매우 편리하게 작용한다.

 

놀랍게도 나는 사지방에 cmd가 막혀있어 반강제로 접했다🤣

파워쉘을 이용한 악성코드 사례가 상당히 많은 만큼 알아두면 좋을 것 같고

때마침 정리가 잘 된 글을 발견하여 같이 따라가 보려 한다.

앞으로의 과정은 해당 글을 참고하여 진행할 예정이다

 

Search PowerShell

Windows Server의 경우 작업 표시줄에 고정되어 있는 것이 일반적이지만, 다른 버전(Client)이나 없다면 위 사진과 같은 방법으로 찾을 수 있다.

 

 

명령어의 법칙 : Verb-Noun

명령어는 보통 (동사-명사)의 형태로 구성되어있다.

예를 들어 컴퓨터를 끄는 명령은 Stop-Computer이고, 명령어를 검색하는 Get-Command 등을 생각하면 쉽다.

몇 가지 명령들과 함께 이해해 보자

 

Get-Date

날짜를 받아오는 명령이다.

Get-Date

 

Get-Process

프로세스 정보를 출력해 준다.

Get-Process

 

Start-Process

프로세스를 시작하며, 아래 코드와 같이 특정 웹 주소와 함께 입력하면 웹 브라우저를 통해 열어준다.

Start-Process 'https://www.google.com'

Start-Process

 

Stop-Computer

컴퓨터를 종료하는 명령이다. 아래 코드를 그대로 입력해 보자

Stop-Computer -WhatIf

Stop-Computer -WhatIf

실행 시키면 아래 뭐라고 출력이 되어있다.

이는 -WhatIf 옵션의 결과로, 명령 실행시 어떤 동작을 수행하는지 알 수 있다.

-WhatIf는 모든 명령어와 사용 가능한 옵션이다.

 

이밖에도 수많은 명령어가 존재한다. 이에 대한 내용은 아래 Get-Command에서 살펴보자

 

 

검색하자 : Get-Command

Get-Command는 사용 가능한 PowerShell 명령어들을 보여준다.

이를 활용하여 다양한 명령어들을 알아보자

Get-Command

 

Get으로 시작하는 명령의 특징을 알겠는가?

바로 무언가를 변경하지 않고 출력해 주기만을 한다는 것이다.

이러한 명령어들은 아래 코드와 같이 확인 가능하다.

Get-Command -Verb Get

Get-Command -Verb Get

 

참고로 이 중에서 Get-Host는 해당 시스템, 특히 PowerShell의 정보를 보여주는 명령어이다.

Get-Host

 

-Verb옵션을 통해 동사 부분을 필터링했다면, 명사 부분도 가능하다.

아래 코드를 입력해 보자

Get-Command -Noun Date

Get-Command -Noun Date

 

날짜와 관련된 명령들이 출력된다.

-Verb, -Noun 옵션과 함께 세부적인 검색이 가능하다는 것을 알 수 있다.

 

위 옵션 말고도 *기호를 이용한 wildcard 검색도 가능하다. 실행 방법은 아래 코드와 같다.

Get-Command *restart*

Get-Command *restart*

 

두 가지 명령 합치기

두 가지 명령을 동시에 실행할 수도 있다. (따지고 보면 한 줄로)

 

Start-Sleep

Start-Sleep 명령은 특정 시간만큼 멈추게 한다.

아래 코드를 실행시켜 보면, 10초 동안 shell이 멈추는 것을 알 수 있다.

Start-Sleep -Seconds 10

 

이번엔 Start-Sleep과 위에서 살펴본 Restart-Computer를 합쳐보자

방법은 간단하다.

세미콜론(;)을 통해 나누어 입력해 주면 된다.

Start-Sleep -Seconds 3600; Restart-Computer

 

위 코드를 실행시키면 PowerShell을 도중에 끄지 않는 이상, 3600초 후에 컴퓨터가 재시작한다.

추가적으로, 도중에 명령 수행 과정을 멈추고 싶다면 CTRL + C를 하면 된다.

 

 

요약


명령어는 Verb-Noun의 형태이다.
ex) Stop-Computer, Get-Command, ...

Get-Date : 날짜를 받아온다
Get-Process : 프로세스 정보를 받아온다
Get-Host : 해당 시스템의 정보를 받아온다
Get-Command : 사용가능한 명령어를 받아온다 (-Verb, -Noun, *wildcard*)    

Start-Process : 프로세스를 시작한다
Start-Sleep : 프로그램을 멈춘다 (-Seconds)
Stop-Computer : 컴퓨터를 종료한다
Restart-Computer : 컴퓨터를 재시작한다


 

 

참고

https://sid-500.com/2017/12/28/powershell-for-beginners-part-2-the-philosophy-verb-noun/

https://sid-500.com/2017/12/26/powershell-for-beginners-part-1-the-console-and-the-first-command/