{{위키데이터 속성 추적}}
{{소프트웨어 정보
| 이름 = 파워셸<br />PowerShell
| 로고 = PowerShell Core 6.0 icon.png
| 로고크기 = 100px
| 화면 = PowerShell Core 7.1.5 with Windows Terminal.png
| 화면크기 = 300px
| 설명 = [[윈도우 터미널]]의 파워셸 7 세션의 스크린샷
| 원저자 = [[제프리 스노버]], 브루스 파예트, 제임스 트루허(그 외 개발자)
| 개발자 = [[마이크로소프트]]
| 발표일 = {{시작 날짜와 나이|2006|11|14}}
| latest release version = 7.4.6
| latest release date = {{시작 날짜와 나이|2024|10|22}}<ref>{{웹 인용
  | url = https://github.com/PowerShell/PowerShell/releases/tag/v7.4.3
  | title = v7.4.3 Release of PowerShell
  | website = PowerShell/PowerShell repo
  | publisher = [[마이크로소프트]]
  | via = [[GitHub.com]]
  | access-date = July 03, 2024}}</ref>
| latest preview version = v7.4.0-preview.2
| latest preview date = {{시작 날짜와 나이|2023|03|14}}<ref>{{웹 인용
  | url = https://github.com/PowerShell/PowerShell/releases/tag/v7.4.0-preview.2
  | title = v7.4.0-preview.2 Release of PowerShell
  | website = PowerShell/PowerShell repo
  | publisher = [[마이크로소프트]]
  | via = [[GitHub.com]]
  | access-date = April 13, 2023}}</ref>
| 지원중단 = 
| 상태 = 
| 프로그래밍 언어 = 
| 운영체제 = [[마이크로소프트 윈도우]]<br />([[윈도우 7]] 이상)<br />[[윈도우 서버]]<br />([[윈도우 서버 2008 R2]] 이상)<br />[[macOS]]<br />([[macOS 시에라|10.12]] 이상)<br />[[우분투 (운영 체제)|우분투]]<br />(14.04, 16.04, 17.04)<br />[[데비안]]<br />(8.7+, 9)<br />[[CentOS]]<br />(7)<br />[[레드햇 엔터프라이즈 리눅스|RHEL]]<br />(7)<br />[[오픈수세]]<br />(42.2)<br />[[페도라 (운영 체제)|페도라]]<br />(25, 26)
| 엔진 = 
| 플랫폼 = [[닷넷 프레임워크]], [[닷넷 코어]]
| 크기 = 
| 언어 = 
| 종류 = [[명령형 프로그래밍|명령형]], [[파이프 소프트웨어|파이프]], [[객체 지향 프로그래밍|객체 지향]], [[함수형 프로그래밍|함수형]], [[반영 (컴퓨터 과학)|반영]]
| 라이선스 = [[MIT 라이선스]]<ref>{{웹 인용|url=https://github.com/PowerShell/PowerShell|title=PowerShell for every system!|date=12 June 2017|publisher=|via=GitHub}}</ref><br />(단, 윈도우 구성요소는 제외)
| 웹사이트 = [https://microsoft.com/powershell microsoft.com/powershell]
| 표준 = 
}}

'''파워셸'''({{llang|en|PowerShell}}) 또는 윈도우 파워셸은 [[마이크로소프트]]가 개발한, 확장 가능한 [[명령 줄 인터페이스]](CLI) [[셸]] 및 [[스크립트 언어]]를 특징으로 하는 [[명령어 인터프리터]]이다. 원래는 '윈도우 파워셸(Windows PowerShell)'로 윈도우 구성요소를 중심으로 개발하였으나 파워셸 코어(PowerShell Core)를 도입하고 2016년 8월 18일에 [[오픈 소스]]를 공개하여 각종 운영 체제에서 쓰일 수 있게 하였다. 윈도우 버전은 [[닷넷 프레임워크]] 기반으로 그 외 운영체제 버전은 [[닷넷 코어]] 기반으로 출시되었다.

파워셸에서 관리 작업은 일반적으로 특정 작업을 구현하는 특수화된 닷넷 [[클래스 (컴퓨터 과학)|클래스]]인 cmdlet(command-lets로 발음)을 통해 실행된다. 이러한 기능은 공급자를 통해 파워셸에 제공되는 [[파일 시스템]]이나 [[레지스트리]]와 같은 다른 데이터 저장소의 데이터에 액세스하여 작동된다. 타 개발자는 cmdlet 및 공급자를 파워셸에 추가할 수 있다. cmdlet은 스크립트에서 사용할 수 있으며 스크립트는 모듈로 패키지화 할 수 있게 된다.

파워셸은 [[컴포넌트 오브젝트 모델|COM]] 및 [[윈도우 관리 도구|WMI]]에 대한 완전한 액세스를 제공하므로 관리자는 원격 리눅스 시스템 및 네트워크 장치를 관리할 수 있도록 [[WS-Management]] 및 [[일반 정보 모델 (컴퓨팅)|CIM]]뿐만 아니라 로컬 및 원격 Windows 시스템에서 모두 관리 작업을 실행시킬 수 있다. 파워셸은 파워셸 런타임을 다른 응용 프로그램에 포함 할 수 있는 호스팅 [[API]]도 제공하고 그런 다음 이러한 응용 프로그램은 파워셸 기능을 사용하여 [[그래픽 인터페이스]]를 통해 노출된 작업을 포함하여 특정 작업을 구현할 수 있다. 이러한 기능은 [[마이크로소프트 SQL 서버]] 2007 버전에서 파워셸 cmdlet 및 공급자로 관리 기능을 노출하고 필요한 cmdlet을 호출하는 파워셸 호스트로 그래픽 관리 도구를 구현하는 데 사용해왔던 것이다. 현재는 마이크로소프트 SQL 서버 2008을 시작으로 각종 MS 응용 프로그램도 파워셸 cmdlet을 통해 관리 인터페이스를 제공한다.

파워셸에는 <code>Get-Help cmdlet</code> 명령어로 통해 액세스 할 수 있는 광범위한 콘솔 기반 도움말([[유닉스 셸]]의 [[man page]]와 유사)을 볼 수 있다.(혹은 <code>Get-Help</code>로 온라인 전환을 통해 사례 별로 웹 도움말을 볼 수 있음)

== 예제 ==
다음 예제는 'string' 문자열 중간에 'ABC'를 삽입한다.
<syntaxhighlight lang="ps1con">
PS > 'string'.Insert(1, 'ABC')
sABCtring
</syntaxhighlight>
다음은 [[닷넷]] 객체의 [[정적 메소드]]를 호출하는 예이다.
<syntaxhighlight lang="ps1con">
PS > [System.Math]::Sqrt(16)
4
</syntaxhighlight>
다음 예제는 특정 [[RSS 피드]]에서 최근 8개의 항목의 제목을 출력한다.
<syntaxhighlight lang="ps1con">
PS > $x = new-object xml
PS > $x.load('http://blogs.msdn.com/powershell/rss.aspx')
PS > $x.rss.channel.item | select title -f 8
</syntaxhighlight>

== 비슷한 명령어들과 cmdlet 비교 ==
파워셸에 들어간 cmdlet과 잘 알려진 명령 줄 인터프리터의 비슷한 명령어를 아래의 표로 나열해 놓았다.

{| class="wikitable" style="width: 100%; text-align: center; font-size: small;"
|-
!윈도우 파워셸<br />(Cmdlet)
!윈도우 파워셸<br />(다른 이름)
![[cmd.exe]] / [[COMMAND.COM]]<br />(MS-DOS, 윈도우, OS/2, 등)
![[Bash]]<br />(유닉스, BSD, 리눅스, 맥 오에스 텐 등)
!설명
|-
|Get-Location
|gl, pwd
|[[cd (명령어)|cd]]
|[[pwd]]
|현재 디렉터리/작업 디렉터리를 보여 준다.
|-
|Set-Location
|sl, cd, chdir
|[[cd (명령어)|cd]], [[cd (명령어)|chdir]]
|cd
|현재 디렉터리를 바꾼다
|-
|Clear-Host
|cls, clear
|[[cls (명령어)|cls]]
|[[clear (유닉스)|clear]]
|화면을 지운다<ref>Clear-Host는 미리 정의된 파워셸 기능으로 추가되어 있다.</ref>
|-
|Copy-Item
|cpi, copy, cp
|[[copy (명령어)|copy]]
|[[cp (유닉스)|cp]]
|하나 이상의 파일 / 완전한 디렉터리 트리를 복사한다
|-
|Get-Help
|help, man
|[[help (명령어)|help]]
|[[멘페이지|man]]
|명령에 대한 도움말을 보여 준다
|-
|Remove-Item
|ri, del, erase, rmdir, rd, rm
|[[del (명령어)|del]], [[del (명령어)|erase]], [[rmdir]], [[rmdir|rd]]
|[[Rm (유닉스)|rm]], rmdir
|파일 / 디렉터리를 지운다
|-
|Rename-Item
|rni, ren
|[[ren (명령어)|ren]], [[ren (명령어)|rename]]
|[[mv]]
|파일 / 디렉터리의 이름을 바꾼다
|-
|Move-Item
|mi, move, mv
|[[move (명령어)|move]]
|[[mv]]
|파일 / 디렉터리를 새로운 위치로 옮긴다
|-
|Get-ChildItem
|gci, dir, ls
|[[dir (명령어)|dir]]
|[[ls (유닉스)|ls]]
|현재 디렉터리의 모든 파일 / 디렉터리를 나열한다
|-
|Write-Output
|echo, write
|[[echo]]
|echo
|문자열, 변수 등을 표준 출력(stdout)으로 출력한다
|-
|Pop-Location
|popd
|[[pushd와 popd|popd]]
|popd
|현재 디렉터리를 맨 마지막에 스택으로 푸시(push)한 디렉터리로 바꾼다
|-
|Push-Location
|pushd
|[[pushd와 popd|pushd]]
|pushd
|현재 디렉터리를 스택으로 푸시(push)한다
|-
|Set-Variable
|sv, set
|[[환경 변수|set]]
|set
|변수 값을 설정하거나 새로 만든다
|-
|Get-Content
|gc, type, cat
|[[TYPE (도스 명령어)|type]]
|[[cat (유닉스)|cat]]
|파일의 내용을 보여 준다
|-
|Select-String
|
|[[find (윈도우)|find]], [[findstr]]
|[[grep]]
|패턴에 맞추어 줄들을 출력한다
|-
|Get-Process
|gps, ps
|tlist,<ref name="Available tlist kill">윈도우 NT4, 윈도우 98 리소스 킷, 윈도우 2000 지원 도구에서 사용할 수 있음</ref> tasklist<ref name="Available tasklist taskkill">윈도우 XP 프로페셔널 에디션 이후에서 사용할 수 있음</ref>
|[[Ps (유닉스)|ps]]
|현재 실행 중인 모든 프로세스를 나열한다
|-
|Stop-Process
|spps, kill
|[[kill]],<ref name="Available tlist kill" /> taskkill<ref name="Available tasklist taskkill" />
|kill
|실행 중인 프로세스를 끝낸다
|-
|Tee-Object
|tee
|없음
|[[tee (명령어)|tee]]
|입력을 파일이나 변수로 파이프(pipe) 처리한 뒤 파이프라인에 따라 입력을 넘긴다
|}

== 리눅스 ==

{| class="wikitable"
|-
|<syntaxhighlight lang="console">
$ # Update the list of packages
$ sudo apt-get update
$ # Install pre-requisite packages.
$ sudo apt-get install -y wget apt-transport-https software-properties-common
$ # Download the Microsoft repository GPG keys
$ wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
$ # Register the Microsoft repository GPG keys
$ sudo dpkg -i packages-microsoft-prod.deb
$ # Update the list of products
$ sudo apt-get update
$ # Enable the "universe" repositories
$ sudo add-apt-repository universe
$ # Install PowerShell
$ sudo apt-get install -y powershell
$ # Start PowerShell
$ pwsh
> exit
</syntaxhighlight>

|-
| (예시) 우분투 20.04<ref>(Microsoft Ignite - Linux에 PowerShell 설치)https://docs.microsoft.com/ko-kr/powershell/scripting/install/installing-powershell-on-linux?view=powershell-7.1</ref>에서 설치후 터미널에서 파워셸을 시작하고 빠져나오는 예
|}

== 같이 보기 ==
* [[일반 정보 모델 (컴퓨팅)]]
* [[프로그래밍 언어의 비교]]
* [[윈도우 스크립트 호스트]]
* [[윈도우 터미널]]

== 각주 ==
<references />

== 외부 링크 ==
{{위키공용분류}}
* {{공식 웹사이트}}
* {{GitHub|PowerShell/PowerShell}}
* [http://social.technet.microsoft.com/wiki/contents/articles/183.windows-powershell-survival-guide-en-us.aspx ''Windows PowerShell Survival Guide''] {{웨이백|url=http://social.technet.microsoft.com/wiki/contents/articles/183.windows-powershell-survival-guide-en-us.aspx |date=20120915113215 }} on [[Microsoft TechNet|TechNet]] Wiki

{{윈도우 구성 요소}}
{{닷넷 프레임워크}}
{{마이크로소프트 API}}
{{전거 통제}}

[[분류:닷넷 프레임워크]]
[[분류:객체 지향 프로그래밍 언어]]
[[분류:스크립트 언어]]
[[분류:2006년 개발된 프로그래밍 언어]]
[[분류:절차적 프로그래밍 언어]]
[[분류:윈도우 관리]]
[[분류:윈도우 명령어]]
[[분류:닷넷 프로그래밍 언어]]
[[분류:셸]]
[[분류:동적 타입 프로그래밍 언어]]
[[분류:텍스트 지향 프로그래밍 언어]]
[[분류:마이크로소프트의 프로그래밍 언어]]