본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
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
대소문자 구분 안 함 구분 안 함
  • 운영체제에 기본으로 있는 강력한 도구라 파일 없이 메모리에서 실행되는 악성코드(파일리스 공격)에 자주 악용된다 → 백신 프로그램
  • 스크립트 블록 로깅·모듈 로깅을 켜고, 실행 정책과 제한된 언어 모드(Constrained Language Mode)로 통제한다