파워셸
IT 위키
더 많은 작업
- PowerShell; Windows PowerShell; 파워셸
- 마이크로소프트가 윈도우 시스템 관리와 자동화를 위해 만든 명령줄 셸이자 스크립팅 언어. 텍스트가 아니라 .NET 개체(object)를 파이프라인으로 주고받는다
- Windows Server 2008 R2·윈도우 7 부터 기본으로 들어갔다(1.0 은 2006년). 5.1 까지가 윈도우 내장판(Windows PowerShell)이고, 6 부터는 .NET Core 기반으로 리눅스·macOS 에서도 도는 오픈 소스판(PowerShell 7)이다
- 명령 단위는 cmdlet(커맨드릿)이며 이름이 동사-명사 꼴이다 —
Get-Process,Get-ChildItem,Stop-Service,Get-Help - 기존 DOS(cmd) 명령도 쓸 수 있다.
dir,cd,copy,del,cls같은 이름은 별칭(alias)으로 해당 cmdlet(예: dir → Get-ChildItem)에 연결돼 있고,ipconfig,ping같은 외부 실행 파일도 그대로 실행된다. 리눅스식 별칭(ls,cat)도 있다 - cmdlet 이름·매개변수·변수 이름은 대소문자를 구분하지 않는다(
get-process=Get-Process) - 콘솔에서 대화형으로 한 줄씩 실행할 수도 있고, 명령을 묶어 스크립트로 실행할 수도 있다
- 스크립트는 확장자 .ps1 의 텍스트 파일이다. 실행 정책(
Set-ExecutionPolicy)이 허용해야 실행된다 — 기본값은 클라이언트 윈도우에서 Restricted, 서버에서 RemoteSigned - 원격 관리(
Enter-PSSession,Invoke-Command, WinRM), Active Directory·Exchange·Hyper-V 모듈로 서버 기능 대부분을 자동화한다
PS C:\> Get-Service | Where-Object {$_.Status -eq "Running"} | Sort-Object Name
PS C:\> dir C:\Windows\*.log # dir 은 Get-ChildItem 의 별칭
PS C:\> Get-Alias dir
| 구분 | 명령 프롬프트(cmd.exe) | PowerShell |
|---|---|---|
| 파이프라인으로 넘기는 것 | 텍스트 | .NET 개체 |
| 명령 | 내부 명령 + 외부 프로그램 | cmdlet, 함수, 별칭, 외부 프로그램(DOS 명령 포함) |
| 스크립트 | .bat, .cmd | .ps1 |
| 대소문자 | 구분 안 함 | 구분 안 함 |