파워쉘

PowerShell
파워쉘
PowerShell Core 6.0 icon.png
PowerShell Core 7.1.5 with Windows Terminal.png
Windows 터미널에서 PowerShell Core 세션의 스크린샷
패러다임필수적, 파이프라인, 객체 지향적, 기능적, 반사적
설계자Jeffrey Snover, Bruce Payette, James Truher (et al.)
개발자마이크로소프트
첫 등장2006년 11월 14일; 15년(2006-11-14)
안정적 해제
7.2.1 / 2021년 12월 15일, 2개월(2021-12-15)[2]
릴리스 미리 보기
v7.3.0-preview.2[1] / 2022년 2월 24일; 15일(2022-02-24)
타이핑 규율강력하고 안전하며 암시적이며 역동적인
구현 언어C#
플랫폼.NET Framework, .네트
OS
면허증MIT 라이센스[3](하지만 Windows 구성 요소는 여전히 독점적임)
파일 이름 확장명
  • .ps1 (스크립트)
  • .ps1xml(XML 문서)
  • .psc1(콘솔 파일)
  • .psd1(데이터 파일)
  • .psm1(스크립트 모듈)
  • .pssc(세션 구성 파일)
  • .psrc(역할 기능 파일)
  • .cdxml(Cmdlet 정의 XML 문서)
웹사이트microsoft.com/powershell
영향을 받은
파이톤, Ksh, Perl, C#, CL, DCL, SQL, Tcl,[4] Chef, Puppet

PowerShell 또는 Microsoft PowerShell(이전의 Windows PowerShell)은 마이크로소프트의 태스크 자동화 및 구성 관리 프로그램으로, 명령줄 과 관련 스크립팅 언어로 구성된다.당초 윈도 파워쉘로 알려진 윈도 컴포넌트 전용으로 2016년 8월 18일 파워쉘 코어의 도입으로 오픈소스크로스 플랫폼이 만들어졌다.[5]전자는 에 기반을 두고 있다.NET Framework, 후자는 의 .NET Core.Windows PowerShell이라는 이름은 최신 버전의 Windows 11과 10에 여전히 존재하지만 최신 버전의 PowerShell은 PowerShell 또는 Microsoft PowerShell이라고 불린다.

PowerShell에서 관리 태스크는 일반적으로 cmdlet(pronclosed command-let)에 의해 수행되며, 이 cmdlet은 전문화된 .특정 운영을 구현하는 NET 클래스.이러한 기능은 제공자를 통해 PowerShell에서 제공하는 파일 시스템 또는 레지스트리와 같은 서로 다른 데이터 저장소의 데이터에 액세스하여 작동한다.타사 개발자는 PowerShell에 cmdlet 및 제공자를 추가할 수 있다.[6][7]cmdlet은 스크립트에 의해 사용될 수 있으며, 차례로 모듈로 포장될 수 있다.

PowerShell은 COMWMI에 대한 액세스를 제공하여 관리자가 로컬 및 원격 윈도우즈 시스템뿐 아니라 WS-ManagementCIM에서 관리 작업을 수행하여 원격 리눅스 시스템 및 네트워크 장치를 관리할 수 있도록 한다.PowerShell은 또한 PowerShell 런타임이 다른 애플리케이션에 내장될 수 있는 호스팅 API를 제공한다.그런 다음 이러한 애플리케이션은 PowerShell 기능을 사용하여 그래픽 인터페이스를 통해 노출된 작업을 포함하여 특정 작업을 구현할 수 있다.이 기능은 Microsoft Exchange Server 2007에서 PowerShell cmdlet 및 제공자로써의 관리 기능을 표시하고 필요한 cmdlet을 호출하는 PowerShell 호스트로서 그래픽 관리 도구를 구현하기 위해 사용되어 왔다.[6][8]마이크로소프트 SQL 서버 2008을 포함한 다른 마이크로소프트 애플리케이션도 PowerShell cmdlet을 통해 관리 인터페이스를 노출한다.[9]

PowerShell에는 를 통해 액세스할 수 있는 광범위한 콘솔 기반 도움말(유닉스 셸의 맨 페이지와 유사)이 포함되어 있음Get-Help까끌까끌하다업데이트된 로컬 도움말 컨텐츠는 다음을 통해 인터넷에서 검색할 수 있음Update-Help까끌까끌하다또는 웹으로부터의 도움은 를 통해 사례별로 획득할 수 있다.-online로 바꾸다.Get-Help.

배경

배경

개인용 컴퓨터용 마이크로소프트 윈도우즈의 모든 버전에는 운영 체제를 관리하기 위한 명령행 통역기(CLI)가 포함되어 있다.그것의 전신인 MS-DOS는 오로지 CLI에만 의존했다.이것들은COMMAND.COMMS-DOSWindows 9x에서cmd.exeWindows NT 운영 체제 제품군.둘 다 몇 가지 기본적인 내부 명령을 지원한다.다른 목적으로는 별도의 콘솔 응용프로그램을 작성해야 한다.기본 스크립팅 언어(batch files)도 포함하는데, 이 언어는 다양한 작업을 자동화하는 데 사용될 수 있다.단, 명령행 등가 운영이 제한되고 스크립팅 언어가 기본이기 때문에 그래픽 사용자 인터페이스(GUI) 기능의 모든 측면을 자동화하는데 사용할 수는 없다.윈도 서버 2003에서는 상황이 개선되었지만, 스크립팅 지원은 여전히 만족스럽지 못했다.[10]

마이크로소프트는 1998년 윈도 98과 함께 윈도 스크립트 호스트와 커맨드라인 기반의 호스트를 도입함으로써 이러한 단점들을 해결하려고 시도했다.cscript.exe. Active Script 엔진과 통합되어 컴포넌트 객체 모델(COM)을 통해 애플리케이션에 의해 노출되는 API를 활용하여 JScript, VBScript와 같은 호환 가능한 언어로 스크립트를 작성할 수 있다. 그러나, 그 자체의 결점이 있다. 설명서는 그다지 접근하기 힘들며, 시스템 취약점이라는 평판을 빠르게 얻었다.몇몇 유명한 컴퓨터 바이러스들이 그것의 보안 규정의 약점을 악용한 후에 bility 벡터.서로 다른 버전의 Windows(윈도우)에서는 자체 명령 집합과 함께 다양한 특수 목적의 명령줄 인터프리터(netsh, WMIC 등)를 제공했지만 상호운용성이 없었다.

커밋

1990년대 후반까지 인텔은 마이크로소프트에 도움을 요청했고, 마이크로소프트는 인텔 CPU에서 실행된 윈도우를 미래의 인텔 CPU 개발을 지원하기 위한 더 적절한 플랫폼으로 만들었다.당시 인텔 CPU 개발은 RISC 아키텍처 CPU에서 Solaris(유닉스 변종)를 실행한 Sun Microsystems 컴퓨터에서 이루어졌다.윈도우즈에서 인텔의 많은 KornShell 자동화 스크립트를 실행할 수 있는 기능이 핵심 기능으로 확인되었다.내부적으로는 마이크로소프트가 코른 셸의 윈도 항구를 만들기 위한 노력을 시작했는데, 이 항구는 코드명 Kermit이었다.[11]인텔은 궁극적으로 인텔 CPU에서 실행될 수 있는 Linux 기반 개발 플랫폼으로 선회하여 Kermit 프로젝트를 중복으로 만들었다.하지만, 전액 지원된 팀을 가진 마이크로소프트 프로그램 매니저 제프리 스노버는 마이크로소프트의 행정 자동화 문제에 대해 좀 더 범용적인 해결책을 만들 기회가 있다는 것을 깨달았다.


모나드

2002년까지 마이크로소프트는 모나드(Monad)라는 CLI(Microsoft Shell 또는 MSH라고도 함)를 포함한 새로운 명령줄 관리 방식을 개발하기 시작했다.그 이면의 사상은 2002년 8월 수석 건축가인 제프리 스노버의 '모나드 매니페스토'라는 백서에 실렸다.[12]스노버는 2017년 인터뷰에서 "윈도우와 리눅스의 핵심 아키텍처 차이 때문에 작동하지 않았던 윈도우에서 유닉스 도구를 사용할 수 있게 하려고 노력해왔다"고 파워쉘의 기원에 대해 설명한다.구체적으로, 그는 리눅스는 모든 것을 ASCII 텍스트 파일로 간주하는 반면, 윈도우즈는 모든 것을 "구조화된 데이터를 반환하는 API"로 간주한다고 언급했다.그들은 근본적으로 양립할 수 없었고, 그로 인해 그는 다른 접근법을 택하게 되었다.[13]

모나드는 다양한 핵심 관리 작업을 자동화할 수 있는 새로운 설계의 확장 가능한 CLI가 될 예정이었다.마이크로소프트는 2003년 10월 로스앤젤레스에서 열린 프로페셔널 개발 콘퍼런스에서 모나드를 처음으로 공개 시연했다.몇 달 후, 그들은 개인 베타를 열었고, 결국 공개 베타를 갖게 되었다.마이크로소프트는 2005년 6월 17일에 첫 번째 모나드 공개 베타 릴리즈를, 2005년 9월 11일에 베타 2를, 2006년 1월 10일에 베타 3을 발표했다.

파워쉘

초기 모나드 발표 후 얼마 지나지 않은 2006년 4월 25일, 마이크로소프트는 모나드가 윈도우 파워쉘로 이름을 바꾸었다고 발표하여, 모나드가 자사의 관리 기술 제품 중 중요한 부분으로 자리 잡았다.[14]PowerShell의 RC(Release Private) 1이 동시에 릴리즈되었다.이름 변경과 RC의 중요한 측면은 이것이 이제 단순한 추가 기능이라기 보다는 윈도우의 구성요소라는 점이었다.

PowerShell 버전 1의 릴리스 후보 2는 2006년 9월 26일에 출시되었으며, 2006년 11월 14일에 웹에 최종 릴리스되었다.이전 버전의 Windows용 PowerShell은 2007년 1월 30일에 출시되었다.[15]PowerShell v2.0 개발은 PowerShell v1.0이 출시되기 전에 시작되었다.개발 과정에서 마이크로소프트는 세 가지 커뮤니티 기술 미리보기(CTP)를 출하했다.마이크로소프트는 이 출시들을 대중에게 제공했다.윈도우즈 PowerShell v2.0의 마지막 CTP 릴리스는 2008년 12월에 제공되었다.

PowerShell for Linux 6.0 Alpha 9 on Ubuntu 14.04 x64

PowerShell v2.0은 Windows 7(윈도우 7) 및 Windows Server 2008 R2(윈도우 서버 2008 R2)의 핵심 부품으로 2009년 8월 제조에 완료되어 출시되었다.Windows XP, Windows Server 2003, Windows Vista 및 Windows Server 2008용 PowerShell 버전은 2009년 10월에 출시되었으며 32비트 및 64비트 플랫폼 모두에서 다운로드할 수 있다.[16]2009년 10월 TechNet Magazine에서 마이크로소프트는 PowerShell에 대한 숙련도를 "향후 Windows 관리자가 필요로 할 가장 중요한 기술"이라고 평가했다.[17]

Windows 10은 PowerShell용 테스트 프레임워크를 출하했다.[18]

2016년 8월 18일 마이크로소프트는 윈도, 맥OS, 센토스, 우분투 등의 지원을 받아 파워쉘 오픈소스 및 크로스 플랫폼을 만들었다고 발표했다[19].[5]소스 코드는 GitHub에 게시되었다.[20]오픈 소스로의 이동은 파워쉘의 두 번째 화신인 "파워쉘 코어"를 만들었는데, 이 화신은 에서 실행된다.NET Core.풀로 실행되는 "Windows PowerShell"과는 구별된다.NET Framework.[21]버전 5.1부터는 Windows Server 2016 [22][23]Nano Server와 함께 PowerShell Core가 번들로 제공됨

디자인

PowerShell의 주요 설계 전략은 Windows, Windows Management Instrumentation 에 이미 존재하는 많은 의 API를 활용하는 것이었습니다.NET Framework 및 기타 소프트웨어.PowerShell cmdlet은 기존 기능을 "뒤집고 다니면서"이 전술의 목적은 관리자 간의 관리자 친화적이고 보다 일관성 있는 인터페이스와 광범위한 기본 기능을 제공하는 것이다.PowerShell을 사용하면 관리자가 알 필요가 없다.NET, WMI 또는 로우 레벨 API 코딩 대신 PowerShell에서 노출되는 cmdlet을 사용하는 데 집중할 수 있다.이와 관련하여 PowerShell은 새로운 기능을 거의 생성하지 않고, 대신 기존 기능을 특정 청중이 보다 쉽게 액세스할 수 있도록 하는 데 초점을 맞춘다.[24]

문법

PowerShell의 개발자들은 POSIX 1003.2 KornShell의 핵심 문법을 기반으로 한다.[25]

그러나 PowerShell의 언어는 PHP, Perl 및 많은 기존 언어의 영향을 받았다.[26]

명명된 명령

Windows PowerShell은 다음과 같은 네 가지 종류의 명명된 명령을 실행할 수 있다.[27]

  • cmdlet(.PowerShell과 상호 작용하도록 설계된 NET Framework 프로그램)
  • PowerShell 스크립트(파일 접미사:.ps1)
  • PowerShell 기능
  • 독립 실행형 실행 프로그램

명령이 독립 실행형 실행 프로그램인 경우 PowerShell은 별도의 프로세스로 실행되며, cmdlet인 경우 PowerShell 프로세스에서 실행된다.PowerShell은 명령을 입력하고 출력을 표시하는 대화형 명령줄 인터페이스를 제공한다.사용자 인터페이스는 사용자 지정 가능한 탭 완료를 제공한다.PowerShell을 사용하면 cmdlet에 대한 별칭을 만들 수 있으며, PowerShell은 이를 원래 명령의 호출로 텍스트 변환한다.PowerShell은 명령에 대해 명명된 매개 변수와 위치 매개 변수를 모두 지원한다.cmdlet을 실행할 때 인수 값을 매개 변수에 바인딩하는 작업은 PowerShell 자체에서 수행되지만 외부 실행 파일의 경우 PowerShell 해석과 독립적으로 외부 실행 파일에 의해 인수가 구문 분석된다.[28]

확장형 시스템

PowerShell ETS(Extended Type System)는 을 기반으로 한다.확장된 의미론(예: propertySet 및 타사 확장성)을 사용하는 NET 유형 시스템.예를 들어, 데이터 필드, 속성 및 메서드의 부분 집합만 노출하고 사용자 정의 형식 지정 및 정렬 동작을 지정함으로써 서로 다른 개체 보기를 만들 수 있다.이러한 보기는 XML 기반 구성 파일을 사용하여 원래 개체에 매핑된다.[29]

Cmdlet

cmdlet은 특정 기능을 구현하는 PowerShell 환경의 전문 명령어다.다음은 PowerShell 스택의 기본 명령입니다.Cmdlet은 Get-ChildItem과 같은 Bub-Noun 이름 패턴을 따르며, 이 이름을 자체 문서화 코드로 만든다.[30]cmdlet은 결과를 개체로 출력하고, 개체를 입력으로 수신할 수도 있어 파이프라인에서 수신자로 사용하기에 적합하다.cmdlet이 여러 개체를 출력하는 경우, 컬렉션의 각 개체는 다음 개체가 처리되기 전에 전체 파이프라인을 통해 전달된다.[30]

cmdlet은 전문화되어 있다.실행PowerShell 런타임이 인스턴스화하고 호출하는 NET 클래스.Cmdlet은 다음 중 하나에서 파생됨Cmdlet또는 에서.PSCmdlet후자는 cmdlet이 PowerShell 런타임과 상호 작용해야 할 때 사용된다.[30]이러한 기본 클래스는 특정 방법을 지정한다.BeginProcessing(),ProcessRecord()그리고EndProcessing()– cmdlet의 구현이 기능을 제공하기 위해 재정의한다.cmdlet이 실행될 때마다 PowerShell은 다음과 같이 순서대로 이러한 방법을 호출한다.ProcessRecord()파이프라인 입력을 수신할 경우 호출됨.[31]개체 모음이 pip으로 연결된 경우, 모음에 있는 각 개체에 대해 메소드가 호출된다.cmdlet을 구현하는 학급은 반드시 하나를 가져야 한다.NET 속성CmdletAttribute– cmdlet의 이름을 구성하는 동사와 명사를 지정한다.공통 동사는 열거형으로 제공된다.[32][33]

cmdlet이 파이프라인 입력 또는 명령줄 매개 변수 입력을 수신하는 경우, 해당 클래스에 돌연변이 구현과 함께 해당 속성이 있어야 한다.PowerShell은 매개 변수 값이나 파이프라인 입력을 사용하여 돌연변이를 호출하며, 이는 돌연변이 구현을 통해 클래스 변수에 저장된다.그런 다음 기능성을 구현하는 방법에 의해 이러한 값을 참조한다.명령줄 매개 변수에 매핑되는 속성은ParameterAttribute[34] 로의 호출 전에 설정된다.BeginProcessing()파이프라인 입력에 대한 지도는 또한 옆에 있다.ParameterAttribute, 그러나.ValueFromPipeline속성 매개 변수 집합.[35]

이러한 cmdlet 클래스의 구현은 어떤 것을 참조할 수 있다.NETAPI 및 에 있을 수 있음.NET 언어.또한 PowerShell은 다음과 같은 특정 API를 사용할 수 있도록 한다.WriteObject()파이프라인에 결과 개체를 쓰는 것과 같은 PowerShell 관련 기능에 액세스하는 데 사용되는 기능.cmdlet은 를 사용할 수 있다.NET 데이터 액세스 API를 직접 사용하거나 PowerShell Providers의 PowerShell 인프라를 사용하여 고유한 경로를 사용하여 데이터 저장소에 주소를 지정할 수 있다.데이터 저장소는 드라이브 문자를 사용하여 노출되며, 데이터 저장소 내의 계층 구조는 디렉토리로 처리된다.Windows PowerShell은 파일 시스템, 레지스트리, 인증서 저장소 및 명령 별칭, 변수 및 함수에 대한 네임스페이스와 함께 제공된다.[36]또한 Windows PowerShell에는 파일 시스템을 포함한 다양한 Windows 시스템을 관리하거나 Windows Management Instrumentation을 사용하여 Windows 구성 요소를 제어하기 위한 다양한 cmdlet이 포함되어 있다.다른 애플리케이션은 cmdlet을 PowerShell에 등록할 수 있으므로 cmdlet을 관리할 수 있으며, 데이터 저장소(예:[citation needed] 데이터베이스)를 포함할 경우 특정 제공자도 추가할 수 있다.

기본 PowerShell 설치에 포함된 cmdlet 수는 일반적으로 각 버전에 따라 증가함:

버전 Cmdlet
Windows PowerShell 1.0 129[37]
Windows PowerShell 2.0 632[38]
Windows PowerShell 3.0 [39] 1,000명
Windows PowerShell 4.0 ?
Windows PowerShell 5.0 약 1,300명[40]
Windows PowerShell 5.1 1586[citation needed]
PowerShell Core 6.0 ?
PowerShell Core 6.1 ?
PowerShell Core 6.2 ?
PowerShell 7.0 1507[citation needed]
PowerShell 7.1 ?
PowerShell 7.2 ?

사용자는 기본 PowerShell 설치에 포함된 cmdlet으로 제한되지 않고 스냅인(v2에서 사용되지 않음) 및 모듈을 통해 cmdlet을 쉘에 추가할 수 있다.

파이프라인

PowerShell은 한 cmdlet의 출력을 입력으로 다른 cmdlet에 연결할 수 있는 파이프라인 개념을 구현했다.예를 들어, 의 출력Get-Processcmdlet을 pipe로 할 수 있다.Where-Object페이징 메모리가 1MB 미만인 프로세스를 필터링한 다음Sort-Objectcmdlet(예: 핸들 카운트별로 객체를 정렬하는 것), 그리고 마지막으로Select-Objectcmdlet을 사용하여 [citation needed]핸들 수를 기준으로 처음 10개의 프로세스만 선택

Unix 파이프라인과 마찬가지로 PowerShell 파이프라인은 다음을 사용하여 복잡한 명령을 생성할 수 있다. 스테이지 연결을 위한 연산자.그러나 PowerShell 파이프라인은 운영 체제에 의해 조정된 프로세스 집합이 아닌 PowerShell 런타임 에서 실행되는 단계에서 Unix 파이프라인과 다르다.추가로, 구조화되었다.바이트 스트림이 아닌 NET 개체는 한 단계에서 다음 단계로 전달된다.개체를 사용하고 PowerShell 런타임 내에서 단계를 실행하면 데이터 구조를 직렬화하거나 텍스트 출력을 명시적으로 구문 분석하여 추출할 필요가 없다.[41]개체는 또한 포함된 데이터에 작용하는 특정 함수를 캡슐화할 수 있으며, 이 함수는 수신인 명령이 사용할 수 있게 된다.[42][43]파이프라인의 마지막 cmdlet의 경우 PowerShell에서 출력 개체를Out-Defaultcmdlet: 객체를 형식 객체의 스트림으로 변환한 다음 화면에 렌더링하는 cmdlet.[44][45]

모든 PowerShell 개체는 입니다.NET Objects(NET Objects, 공유).ToString()객체에서 데이터의 텍스트 표현을 검색하는 방법.또한 PowerShell은 포맷 정의를 지정할 수 있도록 하여 표시할 데이터 요소와 방법을 선택하여 객체의 텍스트 표현을 사용자 정의할 수 있다.그러나 역호환성을 유지하기 위해 외부 실행 파일을 파이프라인에서 사용할 경우 PowerShell 유형 시스템과 직접 통합하는 대신 객체를 나타내는 텍스트 스트림을 수신한다.[46][47][48]

스크립팅

Windows PowerShell에는 cmdlet을 사용하여 복잡한 작업을 반드시 구현할 수 있는 동적으로 입력된 스크립팅 언어가 포함되어 있다.스크립트 언어는 변수, 함수, 분기를 지원한다.if-then-else)), 루프(Loops)while,do,for그리고foreach)), 와의 통합뿐만 아니라,[49] 구조화된 오류/기호 처리 및 폐쇄/폐쇄 표현.NET. PowerShell 스크립트의 변수 앞에는$변수들은 cmdlet의 출력을 포함하여 어떤 값도 할당할 수 있다.문자열은 작은따옴표나 큰따옴표로 묶을 수 있다. 큰따옴표를 사용하면 큰따옴표 안에 있더라도 변수가 확장된다.가새에 있는 파일의 경로에 달러 기호가 선행되는 경우(에서와 같이)${C:\foo.txt})는 파일의 내용에 대한 참조를 만든다.L-값으로 사용할 경우 할당된 모든 항목이 파일에 기록된다.R-값으로 사용하면 파일의 내용이 읽힌다.객체가 할당되면 저장하기 전에 직렬화된다.[citation needed]

다음을 통해 개체 멤버에 액세스할 수 있음.C# 구문과 같은 표기법.PowerShell은 다음과 같은 특수 변수를 제공함$args명령행에서 함수에 전달된 모든 명령줄 인수의 배열이며,$_, 파이프라인에 있는 현재 객체를 가리킨다.[50]PowerShell은 또한 어레이연관 어레이를 제공한다.PowerShell 스크립팅 언어도 명령줄에 입력된 산술 식을 즉시 평가하여 GB, MB, KB 등 일반적인 약어를 구문 분석한다.[51][52]

사용function키워드, PowerShell에서 제공하는 기능.간단한 기능은 다음과 같은 일반적인 모양을 가지고 있다.[53]

기능을 하다 이름을 붙이다 ([유형]$Param1, [유형]$Param2) {   # 지시사항 } 

그러나 PowerShell은 명명된 매개 변수, 위치 매개 변수, 스위치 매개 변수 및 동적 매개 변수를 지원하는 고급 기능을 허용한다.[53]

기능을 하다 동사-눈 {   PARAM. (     # 정적 매개변수 정의   )   동적모수 {     # 동적 매개변수의 정의   }   시작되다 {     # 파이프라인 시작 시 실행 지침 집합   }   과정 {     # 파이프라인에서 각 항목에 대해 실행된 기본 명령 집합   }   종지부를 찍다 {     # 파이프라인 끝에서 실행할 명령 집합   } } 

정의된 함수는 다음 형식 중 하나로 호출된다.[53]

이름을 붙이다 값1 값2 동사-눈 -Param1 값1 -Param2 값2 

PowerShell은 모든 정적 을 허용한다.괄호로 묶은 네임스페이스를 제공하여 NET 방법을 호출한다.[](), 그리고 한 쌍의 콜론(콜론)을 사용한다.::정적 방법을 나타냄.[54]예를 들면 다음과 같다.

[콘솔]::WriteLine("PowerShell") 

PowerShell에서 개체를 생성하는 방법은 수십 가지가 있다.일단 생성되면 를 이용하여 객체의 속성 및 인스턴스 메서드에 접근할 수 있다..표기법[54]

PowerShell은 원시 문자열과 이스케이프 문자열을 모두 수신함작은따옴표 사이에 둘러싸인 문자열은 원시 문자열인 반면 큰따옴표 사이에 둘러싸인 문자열은 이스케이프 문자열이다.PowerShell은 직선과 곱슬곱슬한 따옴표를 동등하게 취급한다.[55]

PowerShell에서 지원하는 특수 문자의 목록은 다음과 같다.[56]

PowerShell 특수 문자
순서 의미
`0 Null
a 경보
b 백스페이스
e 탈출
f 폼피드
n 뉴라인
r 캐리지 리턴
t 수평 탭
'u{x} 유니코드 이스케이프 시퀀스
v 세로 탭
--% 이 시점의 문자를 문자 그대로 앞으로 처리

오류 처리를 위해 PowerShell은 를 제공한다.NET 기반 예외 처리 메커니즘.오류가 발생한 경우 오류에 대한 정보를 포함하는 개체(Exception물체)를 던지며, 이 물체는 다음 물체를 사용하여 잡는다.try ... catch을 구성하다trap구성도 지원됨).PowerShell은 실제로 예외를 두지 않고 자동으로 실행을 재개하도록 구성할 수 있으며, 이는 단일 명령이나 단일 세션 또는 영구적으로 수행될 수 있다.[57]

PowerShell을 사용하여 작성한 스크립트는 세션 간에 유지되도록 만들 수 있으며.ps1서류철이나 서류철.psm1파일(후자는 모듈을 구현하는 데 사용됨).나중에 전체 스크립트 또는 스크립트의 개별 기능을 사용할 수 있다.스크립트 및 기능은 cmdlet과 유사하게 작동하는데, 이는 cmdlet을 파이프라인에서 명령어로 사용할 수 있고, 매개 변수는 cmdlet에 바인딩될 수 있다는 것이다.파이프라인 개체는 기능, 스크립트 및 cmdlet 간에 원활하게 전달될 수 있다.의도하지 않은 스크립트 실행을 방지하려면 기본적으로 스크립트 실행을 사용하지 않도록 설정하며 명시적으로 실행해야 한다.[58]스크립트 활성화는 시스템, 사용자 또는 세션 수준에서 수행할 수 있다.PowerShell 스크립트는 무결성을 확인하기 위해 서명할 수 있으며 코드 액세스 보안의 적용을 받는다.[59]

PowerShell 스크립팅 언어는 C-family의 많은 프로그래밍 언어에서 지원되는 과학적 표기법과 유사한 이진 접두사 표기법을 지원한다.[60]

호스팅

PowerShell 런타임을 사용하여 관리 기능을 구현하는 관리 애플리케이션에 내장된 PowerShell도 사용할 수 있다.이를 위해 PowerShell은 관리 호스팅 API를 제공한다.API를 통해 애플리케이션은 애플리케이션 프로세스에서 실행되며 다음과 같이 노출되는 실행 공간(PowerShell 런타임의 한 인스턴스화)을 인스턴스화할 수 있다.Runspace이의를 [6]제기하다런스페이스의 상태는 다음 항목으로 둘러싸여 있다.SessionState반대하다실행 공간이 생성되면 윈도우즈 PowerShell 런타임은 제공자를 초기화하고 cmdlet을 열거하는 등 인스턴스화를 초기화하며SessionState이에 반대하다그러면 Runspace는 동기 처리 또는 비동기 처리를 위해 열어야 한다.그 후에는 명령을 실행하는 데 사용할 수 있다.[citation needed]

명령을 실행하려면 파이프라인(로 표시됨)Pipeline객체)를 만들고 런스페이스와 연결해야 한다.그런 다음 파이프라인 개체는 파이프라인을 구성하는 cmdlet으로 채워진다.순차적 작업의 경우(PowerShell 스크립트와 동일) 각 문에 대해 파이프라인 개체가 생성되고 다른 파이프라인 개체 내에 중첩된다.[6]파이프라인이 생성되면 윈도우즈 PowerShell이 파이프라인 프로세서를 호출하여 cmdlet을 해당 어셈블리(명령 프로세서)로 해결하고 참조를 파이프라인에 추가한 후 파이프라인과 연결InputPipe,OutputPipe그리고ErrorOutputPipe파이프라인과의 연결을 나타내는 객체.유형을 확인하고 반사를 사용하여 매개변수를 바인딩한다.[6]일단 파이프라인이 설정되면 호스트는Invoke()명령어 또는 비동기 등가물을 실행하는 방법InvokeAsync(). 만약 파이프라인에Write-Host파이프라인 끝에서 cmdlet은 콘솔 화면에 결과를 기록한다.그렇지 않으면 결과가 호스트에 전달되어 추가 처리를 적용하거나 출력 자체를 표시할 수 있다.[citation needed]

마이크로소프트 Exchange 서버 2007은 관리 GUI를 제공하기 위해 호스팅 API를 사용한다.GUI에 노출된 각 작업은 일련의 PowerShell 명령(또는 파이프라인)에 매핑된다.호스트는 파이프라인을 생성하고 실행한다.실제로 대화형 PowerShell 콘솔 자체는 PowerShell 호스트로, 명령줄에 입력된 스크립트를 해석하고 필요한 스크립트를 생성한다.Pipeline물체를 만들고 그것을 발동시킨다.[citation needed]

원하는 상태 구성

DSC는 소프트웨어 환경을 구성하는 방법을 선언적으로 지정할 수 있도록 허용한다.[61]

구성을 실행하면 DSC는 시스템이 구성에 설명된 상태를 얻는지 확인한다.DSC 구성은 idempotent임.LCM(Local Configuration Manager)은 구성 상태가 유지되는지 확인하기 위해 리소스에서 설명하는 제어 흐름(DSC의 반복적인 부분)을 사용하여 정기적으로 시스템을 폴링한다.

버전

처음에 "모나드"라는 코드명을 사용했던 PowerShell은 2003년 10월 로스앤젤레스에서 열린 Professional Developers Conference에서 처음으로 공개되었다.모든 주요 릴리스는 여전히 지원되며, 각 주요 릴리스는 이전 버전과의 역호환성을 특징으로 한다.

Windows PowerShell 1.0

윈도우즈 콘솔을 사용한 윈도우즈 PowerShell 1.0 세션

PowerShell 1.0은 2006년 11월Windows XP SP2, Windows Server 2003 SP1Windows Vista용으로 출시되었다.[62]윈도우즈 서버 2008의 선택적 구성 요소다.

Windows PowerShell 2.0

PowerShell 스크립트용 통합 개발 환경윈도우즈 7의 윈도우즈 PowerShell ISE v2.0

PowerShell 2.0은 Windows 7(윈도우 7) 및 Windows[63] Server 2008 R2(윈도우 서버 2008 R2)와 통합되어 있으며, Windows XP(서비스 팩 3 포함), Windows Server 2003(서비스 팩 2 포함), Windows Vista(서비스 팩 1 포함)용으로 출시되었다.[64][65]

PowerShell v2에는 240개 이상의 새로운 cmdlet을 포함하여 스크립팅 언어 및 호스팅 API의 변경 사항이 포함되어 있다.[66][67]

PowerShell 2.0의 새로운 기능:[68][69][70]

  • PowerShell 원격 설치:WS-Management를 사용하여 PowerShell 2.0은 원격 시스템이나 대규모 원격 시스템에서 스크립트 및 cmdlet을 호출할 수 있도록 한다.
  • 백그라운드 작업:PSJob이라고도 하며, 명령 시퀀스(스크립트)나 파이프라인을 비동기적으로 호출할 수 있다.작업은 로컬 시스템 또는 여러 원격 시스템에서 실행할 수 있다.PSJob의 인터랙티브 cmdlet은 사용자 입력이 제공될 때까지 작업의 실행을 차단한다.
  • 트랜잭션: cmdlet 및 개발자가 트랜잭션 작업을 수행할 수 있음.PowerShell 2.0에는 PSTranspaction을 시작, 커밋 및 롤백하기 위한 트랜잭션 cmdlet과 함께 트랜잭션을 관리하고 참여 cmdlet 및 제공자 작업으로 전달하는 기능이 포함되어 있다.PowerShell 레지스트리 공급자는 트랜잭션을 지원한다.
  • 고급 기능:이는 PowerShell 스크립팅 언어를 사용하여 작성된 cmdlet입니다.처음에 "script cmdlet"이라고 불렸던 이 기능은 나중에 "고급 함수"[71]로 이름이 바뀌었다.
  • SteppablePipelines:이를 통해 사용자는 다음과 같은 시간을 제어할 수 있다.BeginProcessing(),ProcessRecord()그리고EndProcessing()cmdlet의 기능을 부른다.
  • 모듈:이를 통해 스크립트 개발자와 관리자는 PowerShell 스크립트를 독립적이고 재사용 가능한 단위로 구성하고 파티션을 분할할 수 있다.모듈의 코드는 자체적인 자급적 컨텍스트에서 실행되며 모듈 외부의 상태에 영향을 미치지 않는다.모듈은 스크립트를 사용하여 제한된 런스페이스 환경을 정의할 수 있다.그들은 공공 및 민간 회원은 물론 끈질긴 상태를 유지하고 있다.
  • 데이터 언어:데이터 정의를 스크립트에서 분리하고 현지화된 문자열 리소스를 런타임에 스크립트로 가져올 수 있는 PowerShell 스크립팅 언어의 도메인별 하위 집합(스크립트 국제화)
  • 스크립트 디버깅:PowerShell 스크립트 또는 기능에서 중단점을 설정할 수 있다.중단점은 선, 선 & 열, 명령 및 변수의 읽기 또는 쓰기 액세스에 설정될 수 있다.스크립트를 통해 중단점을 제어하는 cmdlet 집합을 포함한다.
  • 이벤트:이 기능은 관리 및 시스템 이벤트에 대한 청취, 전달 및 작업을 가능하게 한다.이벤트 기능을 사용하면 PowerShell 호스트에서 관리 엔티티에 대한 상태 변경에 대한 알림을 받을 수 있다.또한 PowerShell 스크립트가 ObjectEvents, PSEventsWmiEvents에 가입하여 동기식 및 비동기식으로 처리할 수 있도록 한다.
  • Windows PowerShell ISE(Integrated Scripting Environment): PowerShell 2.0에는 통합 디버거, 구문 강조 표시, 탭 완료 및 최대 8개의 PowerShell 유니코드 지원 콘솔(Runspaces)을 탭으로 된 UI에 제공하는 GUI 기반 PowerShell 호스트가 포함되며, 스크립트로 선택한 부분만 실행할 수 있는 기능도 제공됨.
  • 네트워크 파일 전송: BITS(Background Intelligent Transfer Service)[72]를 사용하여 시스템 간에 파일의 우선 순위 지정, 제한 및 비동기 전송을 기본적으로 지원
  • 새 cmdlet:포함Out-GridView WPFGridView 객체, 이를 허용하는 시스템 및 ISE가 설치 및 활성화된 경우 표 형식의 데이터를 표시한다.
  • 새 연산자:-Split,-Join, 및 스플래팅(Splatting)@) 연산자.
  • Try-Catch-Finally를 사용한 예외 처리:다른 것과 달리.NET 언어, 이것은 하나의 캐치 블록에 대해 여러 가지 예외 유형을 허용한다.
  • 내포 가능한 위치 문자열:PowerShell Here-String이 개선되었으며 이제 중첩될 수 있다.[73]
  • 블록 설명: PowerShell 2.0은 다음을 통해 블록 코멘트를 지원한다.<#그리고#>구분 [74]기호로
  • 새 API:새로운 API는 PowerShell 구문 분석기와 런타임을 호스트에 더 많이 제어하는 것에서부터 Runspaces 컬렉션을 생성하고 관리하는 것까지 다양하다.RunspacePools)뿐만 아니라 PowerShell의 구성된 하위 집합만 호출할 수 있는 제한된 런스페이스를 만드는 기능.새로운 API는 PowerShell에서 관리하는 트랜잭션에 대한 참여도 지원

Windows PowerShell 3.0

PowerShell 3.0은 Windows 8Windows Server 2012와 통합되어 있으며,Microsoft는 또한 PowerShell 3.0을 Service Pack 1이 설치된 Windows 7, Service Pack 1이 설치된 Windows Server 2008 및 Service Pack 1이 설치된 Windows Server 2008 R2에 사용할 수 있도록 했다.[75][76]

PowerShell 3.0은 더 큰 패키지인 WMF3(Windows Management Framework 3.0)의 일부로서 원격 구성을 지원하는 WinRM 서비스도 포함되어 있다.[76]마이크로소프트는 WMF3의 커뮤니티 테크놀로지 프리뷰를 여러 개 출시했다. Windows Management Framework 3.0의 초기 커뮤니티 기술 프리뷰 2(CTP 2) 버전은 2011년 12월 2일에 출시되었다.[77]Windows Management Framework 3.0은 2012년[78] 12월에 일반 가용성을 위해 출시되었으며 기본적으로 Windows 8 및 Windows Server 2012에 포함되어 있다.[79]

PowerShell 3.0의 새로운 기능:[76][80]: 33–34

  • 스케줄링된 작업: 작업은 윈도우즈 작업 스케줄러 인프라를 사용하여 사전 설정된 시간과 날짜에 실행되도록 예약할 수 있다.
  • 세션 연결:세션 연결을 끊고 다시 연결할 수 있음.원격 세션은 일시적인 네트워크 장애에 대해 더 관대해졌다.
  • 향상된 코드 쓰기:코드 완성(IntelliSense) 및 스니펫이 추가된다.PowerShell ISE는 사용자가 대화 상자를 사용하여 PowerShell cmdlet에 대한 매개 변수를 입력할 수 있도록 한다.
  • 위임 지원:관리 작업은 영구적인 추가 사용 권한을 부여하지 않고 해당 유형의 작업에 대한 사용 권한이 없는 사용자에게 위임할 수 있다.
  • 도움말 업데이트:도움말 문서화는 Update-Help 명령을 통해 업데이트할 수 있다.
  • 자동 모듈 감지:모듈은 해당 모듈의 명령이 호출될 때마다 암시적으로 로드된다.코드 완료는 언로드된 모듈에도 적용된다.
  • 새 명령: 디스크 관리 기능을 포함하여 수십 개의 새 모듈이 추가됨get-WmiObject win32_logicaldisk, 이전에 WMI를 통해 수행되었던 볼륨, 방화벽, 네트워크 연결 및 프린터.[further explanation needed]

Windows PowerShell 4.0

PowerShell 4.0은 윈도우즈 8.1윈도우즈 서버 2012 R2와 통합되어 있다.Microsoft는 또한 PowerShell 4.0을 Windows 7 SP1, Windows Server 2008 R2 SP1 및 Windows Server 2012에 사용할 수 있도록 했다.[81]

PowerShell 4.0의 새로운 기능:

  • 원하는 상태 구성:[82][83][84]DMTF 관리 표준 및 WS-Management Protocol을 사용하는 시스템의 구성 데이터를 배포 및 관리할 수 있는 선언적 언어 확장 및 도구
  • 새 기본 실행 정책:윈도우즈 서버s에서 기본 실행 정책은RemoteSigned.
  • 저장 도움말: 이제 원격 컴퓨터에 설치된 모듈에 대한 도움말을 저장할 수 있다.
  • 향상된 디버깅:디버거는 이제 워크플로우 디버깅, 원격 스크립트 실행 및 PowerShell 세션 재구성 전반의 디버깅 세션 보존을 지원한다.
  • -PipelineVariable 스위치: 프로그래밍을 위한 변수로 현재 파이프라인 객체를 노출하는 새로운 유비쿼터스 파라미터
  • 물리적 및 Hyper-V의 가상화된 네트워크 스위치를 관리하기 위한 네트워크 진단
  • Where ForAweet 메서드 구문은 객체를 필터링하고 반복하는 대체 방법을 제공한다.

Windows PowerShell 5.0

PowerShell 5.0 아이콘

PowerShell 5.0이 포함된 WMF(Windows Management Framework) 5.0 RTM은 심각한 버그를 포함한 초기 릴리즈에 이어 2016년 2월 24일 웹에 다시 릴리즈되었다.[85]

주요 기능 포함:

  • 새로운class 객체 지향 프로그래밍을 위한 클래스를 만드는 키워드
  • 새로운enum열거형을 만드는 키워드
  • OneGet Chocolypackage 관리자[86] 지원하는 cmdlet
  • 스위치 관리를 계층 [87]2 네트워크 스위치로 확장
  • PowerShell 백그라운드 작업 및 다른 프로세스에서 호스팅되는 PowerShell 인스턴스(각각 "runspace")에 대한 디버깅
  • 원하는 상태 구성(DSC) LCM(로컬 구성 관리자) 버전 2.0
  • DSC 부분 구성
  • DSC 로컬 구성 관리자 메타 구성
  • PowerShell 클래스를 사용하여 DSC 리소스 작성

Windows PowerShell 5.1

2016년 8월 2일 윈도 10주년 업데이트[88] 함께 윈도 서버 2016에서 출시되었다.[89]PackageManagement는 이제 프록시를 지원하며, PSReadLine은 이제 ViMode를 지원하며, 두 개의 새로운 cmdlet, 즉 Get-TimeZone과 Set-TimeZone이 추가되었다.LocalAccounts 모듈은 로컬 사용자 계정을 추가/제거할 수 있다.[90]2016년 7월 16일 Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 및 Windows Server 2012 R2에 대한 PowerShell 5.1의 미리보기가 출시되어 2017년 1월 19일에 출시되었다.[91][92]

PowerShell 5.1은 "데스크톱"과 "코어"의 두 가지 에디션으로 출시되는 첫 번째 버전이다."데스크톱" 에디션은 에서 실행되는 기존 Windows PowerShell의 연속 버전입니다.NET Framework 스택."Core" 에디션은 에서 운영된다.NET Core 및 Windows Server 2016 Nano Server와 함께 번들로 제공됨작은 설치 공간에 대한 교환으로, 후자는 클립보드를 관리하거나 컴퓨터를 도메인에 가입시키는 cmdlet, WMI 버전 1 cmdlet, 이벤트 로그 cmdlet 및 프로필과 같은 일부 기능이 부족하다.[23]이는 Windows 전용 PowerShell의 최종 버전이었습니다.

PowerShell Core 6

PowerShell Core 6.0은 2016년 8월 18일 마이크로소프트가 PowerShell Core와 제품을 Windows와 독립적으로 크로스 플랫폼으로 만들겠다는 결정을 발표하면서 처음 발표되었다.[5]2018년 1월 10일 윈도, 맥OS, 리눅스일반적 가용성을 달성했다.[93]자체 지원 라이프사이클을 갖추고 있으며, 윈도 10과 함께 도입된 마이크로소프트 라이프사이클 정책을 고수하고 있다: 최신 버전의 PowerShell Core만 지원된다.마이크로소프트는 6개월마다 PowerShell Core 6.0의 부 버전을 출시할 것으로 예상하고 있다.[94]

이 버전의 PowerShell에서 가장 큰 변화는 다른 플랫폼으로의 확장이다.윈도우즈 관리자의 경우 이 버전의 PowerShell에는 주요 새로운 기능이 포함되지 않았다.2018년 1월 11일 커뮤니티와의 인터뷰에서, PowerShell 팀은 Windows PowerShell 5.1에서 PowerShell Core 6.0으로 이전할 Windows IT 전문가에게 일어날 수 있는 가장 흥미로운 10가지 사항을 나열하도록 요청 받았다. 이에 대응하여, Microsoft의 Angel Calvo는 크로스 플랫폼과 오픈 소스라는 두 가지 이름만 지정할 수 있었다.[95]

마이크로소프트에 따르면 PowerShell 6.1의 새로운 기능 중 하나는 "Windows 10 및 Windows Server 2019의 1900개 이상의 기존 cmdlet과의 호환성"[96]이다.그러나 변경 로그의 전체 버전에서는 이러한 cmdlet에 대한 세부 정보를 찾을 수 없다.[97]이후 마이크로소프트는 PowerShell Core가 Windows PowerShell 5.1을 대체하지 못하고 Windows에서 영향력을 행사하지 못했기 때문에 이 숫자가 부족했다고 공언한다.[98]하지만 그것은 Linux에서 인기가 있었다.[98]

PowerShell Core 6.2는 주로 성능 향상, 버그 수정, 개발자 생산성을 향상시키는 작은 cmdlet 및 언어 향상에 중점을 두고 있다.[99]

PowerShell 7

PowerShell 7은 PowerShell Core 6.x 제품과 마지막으로 지원되는 Windows PowerShell 버전인 Windows PowerShell 5.1의 대체 버전이다.[100][98]개발의 초점은 PowerShell 7을 Windows PowerShell 5.1의 대체 가능한 제품으로 만드는 것이었습니다. 즉, Windows와 함께 제공되는 모듈과의 호환성 측면에서 Windows PowerShell과 거의 유사하게 호환되도록 하는 것이었습니다.[101]

PowerShell 7의 새로운 기능:[102]

  • -Parallel로 바꾸다.ForEach-Object병렬 프로세싱을 처리하는 데 도움이 되는 cmdlet
  • 기본 제공 Windows 모듈과의 호환성 측면에서 Windows PowerShell과 거의 유사
  • 새 오류 보기
  • Get-Error까끌까끌하다
  • 파이프라인 체인 연산자(&&그리고 파이프라인에서 다음 cmdlet의 조건부 실행을 허용하는 것
  • ?: 3차 작동 연산자
  • ??=변수의 기존 값이 null인 경우에만 변수에 값을 할당하는 연산자
  • ??null 병합 연산자
  • 크로스 플랫폼Invoke-DscResource(iii)
  • Return of theOut-GridView까끌까끌하다
  • Return of the-ShowWindow로 바꾸다.Get-Help


PowerShell 7.2

PowerShell 7.2는 와 함께 릴리즈되었다.NET 6.0은 Linux, Windows, Mac 및 Docker 컨테이너 형식으로 제공된다.[103]

새로운 기능은

  • Linux용 범용 설치 프로그램 패키지
  • Windows Microsoft Update 지원
  • 향상된 탭 보완
  • 예측 IntelliSense가 포함된 PSReadLine 2.1

유사한 명령을 사용한 cmdlet 비교

다음 표에는 PowerShell과 함께 제공되는 cmdlet 선택 항목이 포함되어 있으며, 다른 잘 알려진 명령줄 인터프리터에서도 유사한 명령을 확인할 수 있다.이와 유사한 명령의 대부분은 PowerShell 내에서 별칭으로 정의되어 즉시 사용할 수 있으므로 다른 공통 쉘에 익숙한 사람들이 쉽게 작업을 시작할 수 있다.

다른 명령줄 인터프리터의 내부 및 외부 명령과 PowerShell cmdlet 비교
PowerShell(Cmdlet) PowerShell(Alias) Windows 명령 프롬프트 유닉스 셸 설명
Get-ChildItem gci, dir, ls[a] 디르 ls 현재 또는 지정된 폴더의 모든 파일 및 폴더 나열
테스트[b] 연결 핑핑을 하다 핑핑을 하다 핑핑을 하다 현재 시스템에서 지정된 시스템으로 ICMP 에코 요청을 보내거나 다른 시스템에서 이 요청을 수행하도록 지시
Get-Content gc, type, cat 타자를 치다 고양이를 파일의 내용 가져오기
Get-Command gcm 도와줘, 어디에 유형, 즉, 컴포함 사용 가능한 명령 나열 및 명령 경로 가져오기
겟헬프 도와줘! 돕다 아프로포스, 임마 콘솔에 명령어 설명서 인쇄
호스트 지우기 cls, clear cls 분명한 화면[c] 지우기
카피-항목 cpi, copy, cp 복사, xcopy, 로보코피 cp 파일 및 폴더를 다른 위치로 복사
이동 항목 mi, move, mv 움직이다 mv 파일 및 폴더를 새 위치로 이동
제거 항목 리, 델, 지우기, rmdir, rd, rm , 지우기, rmdir, rd. rm, rmdir. 파일 또는 폴더 삭제
이름 바꾸기-항목 rni, ren, mv , 이름 바꾸기 mv 단일 파일, 폴더, 하드 링크 또는 심볼릭 링크 이름 바꾸기
겟 로케이션 gl, cd, pwd cd pwd 작업 경로 표시(현재 폴더)
팝 로케이션 펑펑 울리다 펑펑 울리다 펑펑 울리다 가장 최근에 스택에 푸시된 위치로 작업 경로 변경
푸시-위치 밀다 밀다 밀다 작업 경로를 스택에 저장
세트 로케이션 sl, cd, chdir. cd, chdir cd 작업 경로 변경
티-객체 티를 내다 해당 없음 티를 내다 파일 또는 변수에 파이프 입력을 전달하여 파이프라인을 따라 입력 전달
쓰기 출력 메아리, 쓰기 메아리치다 메아리치다 문자열 또는 기타 객체를 표준 출력으로 인쇄
프로세스 가져오기 gps, ps tlist,[d] 업무 목록[e] ps 실행 중인 모든 프로세스 나열
중지-프로세스 spps, kill 죽이다,[d] 태스킬[e] 죽이다[f] 실행 중인 프로세스 중지
선택 문자열 슬러쉬 지느러미 찾아라, 찾아내다 패턴과 일치하는 선 인쇄
세트-변수 sv, 세트 세트 env, export, set, setenv 환경 변수의 내용 작성 또는 변경
호출-웹 요청 Iwr, curl, wget[g] 곱슬곱슬하게 하다[105] 곱슬곱슬하다 인터넷의 웹 페이지에서 내용 가져오기

메모들

  1. ^ lsLinux 버전의 PowerShell Core에 별칭이 없음.
  2. ^ 외부 ping 명령은 PowerShell에서 계속 사용할 수 있지만 Test-Connection의 출력은 프로그래밍 방식으로 검사할 수 있는 구조화된 개체다.[104]
  3. ^ Clear-Host는 사전 정의된 PowerShell 기능으로 구현된다.
  4. ^ a b Windows NT 4, Windows 98 리소스 키트, Windows 2000 지원 도구에서 사용 가능
  5. ^ a b Windows XP Professional Edition에 소개
  6. ^ 또한 프로세스 신호를 전송하기 위해 UNIX에서 "종료" 신호는 기본일 뿐이다.
  7. ^ curl그리고wget비슷한 이름의 네이티브 명령을 호출하는 데 방해가 되지 않도록 하기 위해 별칭이 PowerShell Core에 없다.

파일 이름 확장명

확장 설명
.ps1 스크립트 파일[106]
.psd1 모듈의 매니페스트 파일, 일반적으로 스크립트 모듈 또는 이진 모듈과[107] 함께 제공됨
.psm1 스크립트 모듈 파일[108]
.cs DLL 호환[a] 이진 모듈 파일[109]
.ps1xml 형식 및 유형 정의 파일[48][110]
.xml XML 호환[b] 직렬 데이터 파일[111]
.psc1 콘솔 파일[112]
.pssc 세션 구성 파일[113]
.psrc 역할 기능 파일[114]
  1. ^ DLL(Dynamic-Link Library)은 PowerShell 전용 형식이 아니다.그것은 컴파일된 것을 저장하는 일반적인 형식이다.NET 어셈블리의 코드.
  2. ^ XML은 PowerShell 전용 형식이 아니다.그것은 인기 있는 정보 교환 형식이다.

애플리케이션 지원

적용 버전 Cmdlet 제공자 관리 GUI
Exchange 서버 2007 402
윈도 서버 2008 아니요.
마이크로소프트 SQL 서버 2008 아니요.
마이크로소프트 쉐어포인트 2010 아니요.
시스템 센터 구성 관리자 2012년 R2 400+ 아니요.
시스템 Center Operations 매니저 2007 74 아니요.
시스템 Center 가상 시스템 관리자 2007
시스템 Center 데이터 보호 관리자 2007 아니요. 아니요.
Windows 컴퓨팅 클러스터 서버 2007 아니요.
Lotus Domino용[115] Microsoft Transport Suite 08.02.0012 47 아니요. 아니요.
개방형 XML용[116] Microsoft PowerTools 1.0 33 아니요. 아니요.
IBM WebSphere MQ[117] 6.0.2.2 44 아니요. 아니요.
IoT 코어 추가 기능[118] 74 알 수 없음 알 수 없음
Active Directory용 Quest Management Shell[119] 1.7 95 아니요. 아니요.
특수 작업 소프트웨어 사양 명령[120] 1.0 아니요.
VMware vSphere PowerCLI[121] 6.5 R1 500+
인터넷 정보 서비스[122] 7.0 54 아니요.
Windows 7 문제 해결 센터[123] 6.1 아니요.
마이크로소프트 구현 툴킷[124] 2010
NetApp PowerShell 툴킷[125][126] 4.2 2000+
JAMS Scheduler – Job Access & Management System[127] 5.0 52
UI 자동화[128] 0.8 432 아니요. 아니요.
에칼로직[129] 3.5 55 아니요. 아니요.
로그인벤토리[130] 5.8
SePSX[131] 0.4.1 39 아니요. 아니요.

대체 구현

널리 알려진 "bash" Unix shell에 대한 말장난Pash라는 이름의 프로젝트는 Mono 프레임워크를 통해 PowerShell을 오픈 소스크로스 플랫폼 재구성한 것이다.[132]파시는 이고르 무크닉에 의해 창조되었고, C#에 쓰여졌으며 GNU 일반공인면허에 따라 발매되었다.파시 개발은 2008년에 중단되었고, 2012년에 GitHub에서 다시 시작되었으며,[133] 마침내 2016년에 PowerShell이 오픈 소스 및 크로스 플랫폼으로 공식화되면서 중단되었다.[134]

참고 항목

참조

  1. ^ "Release v7.3.0-preview.2 Release of PowerShell · PowerShell/PowerShell · GitHub".
  2. ^ "PowerShell/PowerShell". GitHub. Retrieved 2021-12-15.
  3. ^ "PowerShell for every system!". 12 June 2017 – via GitHub.
  4. ^ Snover, Jeffrey (May 25, 2008). "PowerShell and WPF: WTF". Windows PowerShell Blog. Microsoft.
  5. ^ a b c Bright, Peter (2016-08-18). "PowerShell is Microsoft's latest open source release, coming to Linux, OS X". Ars Technica. Condé Nast. Archived from the original on 2020-04-09. Retrieved 2020-05-12.
  6. ^ a b c d e "How Windows PowerShell works". Microsoft Developer Network. Microsoft. Retrieved 2007-11-27.
  7. ^ Truher, Jim (December 2007). "Extend Windows PowerShell With Custom Commands". MSDN Magazine. Microsoft. Archived from the original on 6 October 2008.
  8. ^ Lowe, Scott (January 4, 2007). "Exchange 2007: Get used to the command line". TechRepublic. CBS Interactive. Archived from the original on 2018-11-16. Retrieved 2020-05-12.
  9. ^ Snover, Jeffrey (2007-11-13). "SQL Server Support for PowerShell!". Windows PowerShell Blog (blog posting). Microsoft. Archived from the original on 2007-11-15. Retrieved 2007-11-13.
  10. ^ Dragan, Richard V. (April 23, 2003). "Windows Server 2003 Delivers Improvements All Around". Reviews. PC Magazine. Ziff Davis. A standout feature here is that virtually all admin utilities now work from the command line (and most are available through telnet).
  11. ^ Jones, Don (2020). Shell of an Idea: The Untold History of PowerShell. p. 25. ISBN 978-1-9536450-3-6.
  12. ^ Jeffrey P. Snover (8 August 2002). "Monad Manifesto" (PDF). Windows PowerShell Blog. Microsoft. Retrieved 2 April 2021.
  13. ^ Biggar and Harbaugh (2017-09-14). "The Man Behind Windows PowerShell". To Be Continuous (Podcast). Heavybit. Retrieved 2017-09-14.
  14. ^ "Windows PowerShell (Monad) Has Arrived". Windows PowerShell Blog. Microsoft. April 25, 2006.
  15. ^ Snover, Jeffrey (November 15, 2006). "Windows PowerShell & Windows Vista". Windows PowerShell Blog (blog posting). Microsoft.
  16. ^ "Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0)". Support. Microsoft. September 30, 2013. Archived from the original on October 13, 2013.
  17. ^ Posey, Brien (6 October 2009). "10 reasons why you should learn to use PowerShell". TechRepublic. Retrieved 2 April 2021.
  18. ^ "What is Pester and Why Should I Care?". 14 December 2015.
  19. ^ Snover, Jeffrey (18 August 2016). "PowerShell is open sourced and is available on Linux". Microsoft Azure Blog. Microsoft.
  20. ^ "PowerShell/PowerShell". GitHub. Retrieved 2016-08-18.
  21. ^ Hansen, Kenneth; Calvo, Angel (August 18, 2016). "PowerShell on Linux and Open Source!". Windows PowerShell Blog. Microsoft.
  22. ^ Foley, Mary Jo (August 18, 2016). "Microsoft open sources PowerShell; brings it to Linux and Mac OS X". ZDNet. CBS Interactive.
  23. ^ a b "PowerShell on Nano Server". TechNet. Microsoft. 20 October 2016.
  24. ^ Jones, Don (2020). Shell of an Idea: The Untold History of PowerShell. p. 45. ISBN 978-1-9536450-3-6.
  25. ^ Payette, Bruce (2007). Windows PowerShell in Action. Manning Pubs Co Series. Manning. p. 27. ISBN 9781932394900. Retrieved 2016-07-22. The core PowerShell language is based on the POSIX 1003.2 grammar for the Korn shell.
  26. ^ Jones, Don (2020). Shell of an Idea: The Untold History of PowerShell. p. 109. ISBN 978-1-9536450-3-6.
  27. ^ "about_Command_Precedence". TechNet. Microsoft. May 8, 2014.
  28. ^ Wheeler, Sean (2021-09-07). "about Parsing - PowerShell". Microsoft Docs. Retrieved 2021-12-05.{{cite web}}: CS1 maint : url-status (링크)
  29. ^ "Windows PowerShell Extended Type System". Retrieved 2007-11-28.
  30. ^ a b c "Windows PowerShell Cmdlets". Retrieved 2007-11-28.
  31. ^ "Creating Your First Cmdlet". Retrieved 2007-11-28.
  32. ^ "Get-Verb". TechNet. Microsoft. May 8, 2014.
  33. ^ "Cmdlet Overview". MSDN. Microsoft. May 8, 2014.
  34. ^ "Adding parameters That Process Command Line Input". Retrieved 2007-11-28.
  35. ^ "Adding parameters That Process Pipeline Input". Retrieved 2007-11-28.
  36. ^ "Windows PowerShell Providers". Retrieved 2010-10-14.
  37. ^ Yoshizawa, Tomoaki; Ramos, Durval (29 September 2012). "PowerShell 1.0 Cmdlets". TechNet Articles. Microsoft.
  38. ^ Yoshizawa, Tomoaki (10 July 2012). "PowerShell 2.0 Cmdlets". TechNet Articles. Microsoft.
  39. ^ Wilson, Ed (2013). "1: Overview of Windows PowerShell 3.0". Windows Powershell 3.0 Step by Step. Sebastopol, California: Microsoft Press. ISBN 978-0-7356-7000-6. OCLC 829236530. Windows PowerShell 3.0 comes with about 1,000 cmdlets on Windows 8
  40. ^ Wilson, Ed (2015). "1: Overview of Windows PowerShell 5.0". Windows PowerShell Step by Step (Third ed.). Redmond, Washington: Microsoft Press. ISBN 978-1-5093-0043-3. OCLC 927112976. Windows PowerShell 5.0 comes with about 1,300 cmdlets on Windows 10
  41. ^ "Windows PowerShell Owner's Manual: Piping and the Pipeline in Windows PowerShell". TechNet. Microsoft. Retrieved 2011-09-27.
  42. ^ Jones, Don (2008). "Windows PowerShell – Rethinking the Pipeline". Microsoft TechNet. Microsoft. Retrieved 2007-11-28.
  43. ^ "Windows PowerShell Object Concepts". Archived from the original on August 19, 2007. Retrieved 2007-11-28.
  44. ^ "How PowerShell Formatting and Outputting REALLY works". Retrieved 2007-11-28.
  45. ^ "More – How does PowerShell formatting really work?". Retrieved 2007-11-28.
  46. ^ "about_Pipelines". TechNet. Microsoft. May 8, 2014.
  47. ^ "about_Objects". TechNet. Microsoft. May 8, 2014.
  48. ^ a b "about_Format.ps1xml". TechNet. Microsoft. May 8, 2014.
  49. ^ "Anonymous Functions and Code Blocks in PowerShell". Retrieved 2012-01-21.
  50. ^ "Introduction to Windows PowerShell's Variables". Retrieved 2007-11-28.
  51. ^ "Byte Conversion". Windows PowerShell Tip of the Week. Retrieved 15 November 2013.
  52. ^ Ravikanth (20 May 2013). "Converting to size units (KB, MB, GB, TB, and PB) without using PowerShell multipliers". PowerShell Magazine.
  53. ^ a b c "about_Functions". Microsoft TechNet. Microsoft. 17 October 2013. Retrieved 15 November 2013.
  54. ^ a b "Lightweight Testing with Windows PowerShell". Retrieved 2007-11-28.
  55. ^ Angelopoulos, Alex; Karen, Bemowski (4 December 2007). "PowerShell Got Smart About Smart Quotes". Windows IT Pro. Penton Media. Retrieved 15 November 2013.
  56. ^ "About Special Characters". Powershell / Scripting. Microsoft. June 8, 2017. Retrieved June 20, 2019.
  57. ^ "Trap [Exception] { "In PowerShell" }". Retrieved 2007-11-28.
  58. ^ "Running Windows PowerShell Scripts". Microsoft. Retrieved 2007-11-28.
  59. ^ "about_Signing". Microsoft TechNet. Microsoft. 17 October 2013. Retrieved 15 November 2013.
  60. ^ Lee Holmes (September 2006). Windows PowerShell Quick Reference. O'Reilly Media.
  61. ^ eslesar. "Windows PowerShell Desired State Configuration Overview". msdn.microsoft.com.
  62. ^ Chung, Leonard; Snover, Jeffrey; Kumaravel, Arul (14 November 2006). "It's a Wrap! Windows PowerShell 1.0 Released!". Windows PowerShell Blog. Microsoft.
  63. ^ "PowerShell will be installed by default on Windows Server 08 R2 (WS08R2) and Windows 7 (W7)!". Windows PowerShell Blog. Microsoft. 2008-10-28. Retrieved 2011-09-27.
  64. ^ "Windows Management Framework is here!". 2009-10-27. Retrieved 2009-10-30.
  65. ^ "Microsoft Support Knowledge Base: Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0)". Support.microsoft.com. 2011-09-23. Retrieved 2011-09-27.
  66. ^ "574 Reasons Why We Are So Proud and Optimistic About W7 and WS08R2". Windows PowerShell Blog. Microsoft. 2008-10-29. Retrieved 2011-09-27.
  67. ^ Snover, Jeffrey (2008). "PowerShell: Creating Manageable Web Services". Archived from the original on October 13, 2008. Retrieved July 19, 2015.
  68. ^ "What's New in CTP of PowerShell 2.0". Retrieved 2007-11-28.
  69. ^ "Windows PowerShell V2 Community Technology Preview 2 (CTP2) – releaseNotes". Microsoft. Archived from the original on May 6, 2008. Retrieved 2008-05-05.
  70. ^ "Differences between PowerShell 1.0 and PowerShell 2.0". Retrieved 2010-06-26.
  71. ^ Jones, Don (May 2010). "Windows PowerShell: Writing Cmdlets in Script". TechNet Magazine. Microsoft.
  72. ^ "GoGrid Snap-in – Managing Cloud Services with PowerShell". Windows PowerShell Blog. Microsoft. 2008-10-14. Retrieved 2011-09-27.
  73. ^ "Emit-XML". Windows PowerShell Blog. Microsoft. 2008-10-17. Retrieved 2011-09-27.
  74. ^ "Block Comments in V2". Windows PowerShell Blog. Microsoft. 2008-06-14. Retrieved 2011-09-27.
  75. ^ Lee, Thomas (13 August 2012). "PowerShell Version 3 is RTM!". Under The Stairs. Retrieved 2012-08-13.
  76. ^ a b c "Windows Management Framework 3.0". Download Center. Microsoft. 4 September 2012. Retrieved 2012-11-08.
  77. ^ "Windows Management Framework 3.0 Community Technology Preview (CTP) #2 Available for Download". Windows PowerShell Blog. Microsoft. 2 December 2011.
  78. ^ "Windows Management Framework 3.0". Download Center. Microsoft. 3 December 2012.
  79. ^ Jofre, JuanPablo (December 14, 2016). "Windows PowerShell System Requirements". Microsoft Developer Network. Microsoft. Retrieved April 20, 2017.
  80. ^ Honeycutt, Jerry (2012). Woolley, Valerie (ed.). Introducing Windows 8: An Overview for IT Professionals. Redmond, WA: Microsoft Press. ISBN 978-0-7356-7050-1.
  81. ^ "Windows Management Framework 4.0 is now available". Microsoft. 24 October 2013. Retrieved 4 November 2013.
  82. ^ Levy, Shay (25 June 2013). "New Features in Windows PowerShell 4.0". PowerShell Magazine. Retrieved 26 June 2013.
  83. ^ "Desired State Configuration in Windows Server 2012 R2 PowerShell". Channel 9. Microsoft. 3 June 2013. Retrieved 26 June 2013.
  84. ^ Hall, Adrian (7 June 2013). "Thoughts from Microsoft TechEd North America". Blogs: Tips & Tricks. Splunk. Retrieved 26 June 2013.
  85. ^ "Windows Management Framework (WMF) 5.0 RTM packages has been republished". Windows PowerShell Blog. Microsoft. February 24, 2016.
  86. ^ "Q and A". GitHub. Retrieved 21 April 2015.
  87. ^ Snover, Jeffrey (2014-04-03). "Windows Management Framework V5 Preview". blogs.technet.com. Microsoft. Archived from the original on 2014-06-30. Retrieved 2015-04-21.
  88. ^ says, Jaap Brasser (2 August 2016). "#PSTip New PowerShell Commands in Windows 10 Anniversary Update".
  89. ^ "What's New In Windows Server 2016 Standard Edition Part 9 – Management And Automation".
  90. ^ "Microsoft.PowerShell.LocalAccounts Module". technet.microsoft.com.
  91. ^ "Announcing Windows Management Framework (WMF) 5.1 Preview". 16 July 2016.
  92. ^ "WMF 5.1". Microsoft Download Center.
  93. ^ Aiello, Joey (11 January 2018). "PowerShell Core 6.0: Generally Available (GA) and Supported!". PowerShell Team Blog. Microsoft. Archived from the original on 11 June 2018. Retrieved 11 June 2018.
  94. ^ Aiello, Joey; Wheeler, Sean (10 January 2018). "PowerShell Core Support Lifecycle". Microsoft Docs. Microsoft.
  95. ^ Calvo, Angel (11 January 2018). "Top 10 most exciting reasons to migrate". PowerShell AMA. Microsoft.
  96. ^ Aiello, Joey (2018-09-13). "Announcing PowerShell Core 6.1". devblogs.microsoft.com. Microsoft. Retrieved 2019-06-01.
  97. ^ "PowerShell/PowerShell". GitHub. Retrieved 2020-06-22.
  98. ^ a b c Lee, Steve (2019-04-05). "The Next Release of PowerShell – PowerShell 7". Microsoft. Retrieved 2019-06-01.
  99. ^ Lee, Steve (2019-03-28). "General Availability of PowerShell Core 6.2". devblogs.microsoft.com. Microsoft. Retrieved 2019-06-01.
  100. ^ Mackie, Kurt (2019-05-30). "Microsoft Releases PowerShell 7 Preview". 1105 Media Inc. Retrieved 2019-06-01.
  101. ^ Lee, Steve (2019-05-30). "PowerShell 7 Road Map". devblogs.microsoft.com. Microsoft. Retrieved 2020-08-12.
  102. ^ PowerShell 7 미리 보기 5 PowerShell
  103. ^ "PowerShell 7.2 is the new version of Microsoft's next-generation shell - itsfoss.net". 12 November 2021.
  104. ^ "Test-Connection". PowerShell documentations. Microsoft. 9 August 2015.
  105. ^ Tar and Curl Windows로 이동! - Microsoft Tech Community - 382409
  106. ^ Wheeler, Sean (2 June 2020). "About Scripts". Microsoft Docs. Microsoft.
  107. ^ Wheeler, Sean; Smatlak, David; Wilson, Chase (16 October 2019). "How to write a PowerShell module manifest". Docs. Microsoft.
  108. ^ Wheeler, Sean; Smatlak, David (22 November 2019). "How to Write a PowerShell Script Module". Microsoft Docs. Microsoft.
  109. ^ Wheeler, Sean (13 November 2016). "How to Write a PowerShell Binary Module". Microsoft Docs. Microsoft.
  110. ^ Wheeler, Sean; Jofre, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David (2 June 2020). "About Types.ps1xml". Microsoft Docs. Microsoft.
  111. ^ Wheeler, Sean. "Export-Clixml". Microsoft Docs. Microsoft.
  112. ^ Wheeler, Sean; Jofre, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David. "Export-Console". Microsoft Docs. Microsoft.
  113. ^ Wheeler, Sean (2 June 2020). "About Session Configuration Files". Microsoft Docs. Microsoft.
  114. ^ Wheeler, Sean (2 June 2020). "New-PSRoleCapabilityFile". Microsoft Docs. Microsoft.
  115. ^ "Microsoft Transporter Suite for Lotus Domino". Microsoft. Retrieved 2008-03-07.
  116. ^ "PowerTools for Open XML". Retrieved 2008-06-20.
  117. ^ "MO74: WebSphere MQ – Windows PowerShell Library". Retrieved 2007-12-05.
  118. ^ "IoT Core Add-ons command-line options". Retrieved 2020-06-13.
  119. ^ "PowerShell Commands for Active Directory by Quest Software". Retrieved 2008-07-02.
  120. ^ "PowerShell Remoting through Group Policy". Retrieved 2007-12-07.
  121. ^ "VMware vSphere PowerCLI". Retrieved 2014-09-09.
  122. ^ "Windows PowerShell : IIS7 PowerShell Provider Tech Preview 2". Retrieved 2008-07-03.
  123. ^ "Kudos to the Win7 Diagnostics Team". Retrieved 2009-06-15.
  124. ^ Michael, Niehaus (10 Jul 2009). "MDT 2010 New Feature #16: PowerShell support". Retrieved 2014-10-27.
  125. ^ "Kudos to NetApp for Data ONTAP PowerShell ToolKit". Retrieved 2010-06-15.
  126. ^ "PowerShell Toolkit 4.2 Announcement". 23 June 2016. Retrieved 2016-09-07.
  127. ^ "Heterogeneous Job Scheduling With PowerShell". Retrieved 2010-09-15.
  128. ^ "UIAutomation PowerShell Extensions". Retrieved 2012-02-16.
  129. ^ "EqualLogic HIT-ME with PowerShell". Retrieved 2012-03-09.
  130. ^ de:LOGinventory
  131. ^ "Selenium PowerShell eXtensions". Retrieved 2012-08-20.
  132. ^ "Pash". SourceForge. Dice Holdings, Inc. Retrieved 2011-09-27.
  133. ^ "Pash Project". GitHub. Retrieved 2013-04-10.
  134. ^ "Pash is now obsolete · Issue #429 · Pash-Project/Pash". GitHub. Retrieved 2019-11-26.

추가 읽기

외부 링크