적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0
다음 항목에서는 다양한 버전의 Windows에 PowerShell SDK를 설치하는 방법을 설명합니다.
Windows 8 및 Windows Server 2012용 Windows PowerShell 3.0 SDK 설치
Windows PowerShell 3.0은 Windows 8 및 Windows Server 2012와 함께 자동으로 설치됩니다. 또한 Windows 8 SDK의 일부로 Windows PowerShell 3.0용 참조 어셈블리를 다운로드하여 설치할 수 있습니다. 이러한 어셈블리를 사용하면 Windows PowerShell 3.0용 cmdlet, 공급자 및 호스트 프로그램을 작성할 수 있습니다. Windows 8용 Windows SDK를 설치하면 windows PowerShell 어셈블리가 \Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0
참조 어셈블리 폴더에 자동으로 설치됩니다. 자세한 내용은 Windows 8 SDK 다운로드 사이트를 참조하세요. Windows PowerShell 코드 샘플은 powershell-sdk-samples 리포지토리에서도 사용할 수 있습니다.
참조 어셈블리
참조 어셈블리는 기본적으로 다음 위치에 설치됩니다. C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\V1.0
.
비고
Windows PowerShell 2.0 어셈블리에 대해 컴파일된 코드는 Windows PowerShell 1.0 설치에 로드할 수 없습니다. 그러나 Windows PowerShell 1.0 어셈블리에 대해 컴파일된 코드는 Windows PowerShell 2.0 설치에 로드할 수 있습니다.
샘플
코드 샘플은 기본적으로 다음 위치에 설치됩니다. C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\
. 다음 섹션에서는 각 샘플이 수행하는 작업을 간략하게 설명합니다.
Cmdlet 샘플
- GetProcessSample01 - 로컬 컴퓨터의 모든 프로세스를 가져오는 간단한 cmdlet을 작성하는 방법을 보여 줍니다.
- GetProcessSample02 - cmdlet에 매개 변수를 추가하는 방법을 보여 줍니다. cmdlet은 하나 이상의 프로세스 이름을 사용하고 일치하는 프로세스를 반환합니다.
- GetProcessSample03 - 파이프라인의 입력을 허용하는 매개 변수를 추가하는 방법을 보여 줍니다.
- GetProcessSample04 - 종료되지 않는 오류를 처리하는 방법을 보여 줍니다.
- GetProcessSample05 - 지정된 프로세스 목록을 표시하는 방법을 보여 줍니다.
- SelectObject - 필터를 작성하여 특정 개체만 선택하는 방법을 보여줍니다.
- SelectString - 지정된 패턴에 대한 파일을 검색하는 방법을 보여 줍니다.
- StopProcessSample01 - PassThru 매개 변수를 구현하는 방법과 ShouldProcess 및 ShouldContinue 메서드를 호출하여 사용자 피드백을 요청하는 방법을 보여 줍니다. 사용자가 cmdlet이 개체를 반환하도록 강제 적용하려는 경우 PassThru 매개 변수를 지정합니다.
- StopProcessSample02 - 특정 프로세스를 중지하는 방법을 보여 줍니다.
- StopProcessSample03 - 매개 변수에 대한 별칭을 선언하는 방법과 와일드카드를 지원하는 방법을 보여 줍니다.
- StopProcessSample04 - 매개 변수 집합을 선언하는 방법, cmdlet이 입력으로 사용하는 개체 및 사용할 기본 매개 변수 집합을 지정하는 방법을 보여 줍니다.
원격 샘플
- RemoteRunspace01 - 원격 연결을 설정하는 데 사용되는 원격 Runspace를 만드는 방법을 보여줍니다.
- RemoteRunspacePool01 - 원격 Runspace 풀을 생성하는 방법과 이 풀을 사용하여 여러 명령을 동시에 실행하는 방법을 보여 줍니다.
- serialization01 - 기존 .NET 클래스를 살펴보고 이 클래스의 선택한 공용 속성의 정보가 serialization/deserialization에서 유지되는지 확인하는 방법을 보여 집니다.
- serialization02 - 기존 .NET 클래스를 살펴보고 클래스의 공용 속성에서 정보를 사용할 수 없는 경우 serialization/deserialization에서 이 클래스의 인스턴스의 정보가 유지되는지 확인하는 방법을 보여 줍니다.
- Serialization03 - 기존 .NET 클래스를 살펴보고 이 클래스 및 파생 클래스의 인스턴스가 라이브 .NET 개체로 역직렬화(리하이드)되는지 확인하는 방법을 보여 줍니다.
이벤트 샘플
- Event01 - ObjectEventRegistrationBase에서 파생하여 이벤트 등록을 위한 cmdlet을 만드는 방법을 보여 줍니다.
- Event02 - 원격 컴퓨터에서 생성된 Windows PowerShell 이벤트의 알림을 받는 방법을 보여 줍니다. Runspace 클래스를 통해 노출되는 PSEventReceived 이벤트를 사용합니다.
애플리케이션 샘플 호스팅
- Runspace01 - PowerShell 클래스를 사용하여
Get-Process
cmdlet을 동기적으로 실행하는 방법을 보여줍니다.Get-Process
cmdlet은 로컬 컴퓨터에서 실행되는 각 프로세스에 대해 Process 개체를 반환합니다. - Runspace02 - PowerShell 클래스를 사용하여
Get-Process
실행하고 cmdlet을 동기적으로Sort-Object
방법을 보여 줍니다.Get-Process
cmdlet은 로컬 컴퓨터에서 실행 중인 각 프로세스에 대해 Process 개체를 반환하고,Sort-Object
id 속성에 따라 개체를 정렬합니다. 이러한 명령의 결과는 DataGridView 컨트롤을 사용하여 표시됩니다. - Runspace03 - PowerShell 클래스를 사용하여 스크립트를 동기적으로 실행하는 방법과 종료하지 않는 오류를 처리하는 방법을 보여줍니다. 스크립트는 프로세스 이름 목록을 받은 다음 해당 프로세스를 검색합니다. 스크립트를 실행할 때 생성된 종료되지 않는 오류를 포함하여 스크립트의 결과가 콘솔 창에 표시됩니다.
- Runspace04 - PowerShell 클래스를 사용하여 명령을 실행하는 방법과 명령을 실행할 때 throw되는 종료 오류를 catch하는 방법을 보여 줍니다. 두 명령이 실행되고 마지막 명령이 유효하지 않은 매개 변수 인수를 전달합니다. 따라서 개체가 반환되지 않고 종료 오류가 throw됩니다.
- Runspace05 - Runspace를 열 때 스냅인의 cmdlet을 사용할 수 있도록 InitialSessionState 개체에 스냅인을 추가하는 방법을 보여 줍니다. 스냅인은 PowerShell 개체를 사용하여 동기적으로 실행되는 Get-Proc cmdlet(GetProcessSample01 샘플에서 정의됨)을 제공합니다.
- Runspace06 - Runspace를 열 때 모듈이 로드되도록 InitialSessionState 개체에 모듈을 추가하는 방법을 보여 줍니다. 이 모듈은 PowerShell 개체를 사용하여 동기적으로 실행되는 Get-Proc cmdlet(GetProcessSample02 샘플에 의해 정의됨)을 제공합니다.
- Runspace07 - Runspace를 만든 다음 해당 Runspace를 사용하여 PowerShell 개체를 사용하여 동기적으로 두 cmdlet을 실행하는 방법을 보여 줍니다.
- Runspace08 - PowerShell 개체의 파이프라인에 명령 및 인수를 추가하는 방법과 명령을 동기적으로 실행하는 방법을 보여 줍니다.
- Runspace09 - PowerShell 개체의 파이프라인에 스크립트를 추가하는 방법과 스크립트를 비동기적으로 실행하는 방법을 보여줍니다. 이벤트는 스크립트의 출력을 처리하는 데 사용됩니다.
- Runspace10 - 기본 초기 세션 상태를 만드는 방법, InitialSessionState에 cmdlet을 추가하는 방법, 초기 세션 상태를 사용하는 Runspace를 만드는 방법 및 PowerShell 개체를 사용하여 명령을 실행하는 방법을 보여 줍니다.
- Runspace11 - ProxyCommand 클래스를 사용하여 기존 cmdlet을 호출하지만 사용 가능한 매개 변수 집합을 제한하는 프록시 명령을 만드는 방법을 보여 줍니다. 그런 다음 프록시 명령은 제한된 Runspace를 만드는 데 사용되는 초기 세션 상태에 추가됩니다. 즉, 사용자는 프록시 명령을 통해서만 cmdlet의 기능에 액세스할 수 있습니다.
- PowerShell01 - InitialSessionState 개체를 사용하여 제한된 Runspace를 만드는 방법을 보여 줍니다.
- PowerShell02 - Runspace 풀을 사용하여 여러 명령을 동시에 실행하는 방법을 보여 줍니다.
호스트 샘플
- Host01 - 사용자 지정 호스트를 사용하는 호스트 애플리케이션을 구현하는 방법을 보여줍니다. 이 샘플에서는 사용자 지정 호스트를 사용하는 Runspace를 만든 다음 PowerShell API를 사용하여
exit
호출하는 스크립트를 실행합니다. 그런 다음 호스트 애플리케이션은 스크립트의 출력을 보고 결과를 출력합니다. - Host02 - 사용자 지정 호스트 구현과 함께 Windows PowerShell 런타임을 사용하는 호스트 애플리케이션을 작성하는 방법을 보여 줍니다. 호스트 애플리케이션은 호스트 문화권을 독일어로 설정하고,
Get-Process
cmdlet을 실행하고, pwrsh.exe사용하여 결과를 표시한 다음, 현재 데이터와 시간을 독일어로 출력합니다. - Host03 - 명령줄에서 명령을 읽고 명령을 실행한 다음 결과를 콘솔에 표시하는 대화형 콘솔 기반 호스트 애플리케이션을 빌드하는 방법을 보여 줍니다.
- Host04 - 명령줄에서 명령을 읽고 명령을 실행한 다음 결과를 콘솔에 표시하는 대화형 콘솔 기반 호스트 애플리케이션을 빌드하는 방법을 보여 줍니다. 또한 이 호스트 애플리케이션은 사용자가 여러 옵션을 지정할 수 있도록 하는 프롬프트 표시를 지원합니다.
- Host05 - 명령줄에서 명령을 읽고 명령을 실행한 다음 결과를 콘솔에 표시하는 대화형 콘솔 기반 호스트 애플리케이션을 빌드하는 방법을 보여 줍니다. 또한 이 호스트 애플리케이션은
Enter-PSSession
및Exit-PSSession
cmdlet을 사용하여 원격 컴퓨터에 대한 호출을 지원합니다. - Host06 - 명령줄에서 명령을 읽고 명령을 실행한 다음 결과를 콘솔에 표시하는 대화형 콘솔 기반 호스트 애플리케이션을 빌드하는 방법을 보여 줍니다. 또한 이 샘플에서는 Tokenizer API를 사용하여 사용자가 입력한 텍스트의 색을 지정합니다.
공급자 샘플
AccessDBProviderSample01 - CmdletProvider 클래스에서 직접 파생되는 공급자 클래스를 선언하는 방법을 보여 줍니다. 완전성을 위해서만 여기에 포함되어 있습니다.
AccessDBProviderSample02 - NewDrive 및 RemoveDrive 메서드를 덮어쓰고
New-PSDrive
및Remove-PSDrive
cmdlet에 대한 호출을 지원하는 방법을 보여 줍니다. 이 샘플의 공급자 클래스는 DriveCmdletProvider 클래스에서 파생됩니다.AccessDBProviderSample03 - GetItem 및 SetItem 메서드를 덮어써서
Get-Item
및Set-Item
cmdlet에 대한 호출을 지원하는 방법을 보여 줍니다. 이 샘플의 공급자 클래스는 ItemCmdletProvider 클래스에서 파생됩니다.AccessDBProviderSample04 -
Copy-Item
,Get-ChildItem
,New-Item
및Remove-Item
cmdlet에 대한 호출을 지원하기 위해 컨테이너 메서드를 덮어쓰는 방법을 보여 줍니다. 이러한 메서드는 데이터 저장소에 컨테이너인 항목이 포함된 경우 구현되어야 합니다. 컨테이너는 공통 부모 항목 아래의 자식 항목 그룹입니다. 이 샘플의 공급자 클래스는 ItemCmdletProvider 클래스에서 파생됩니다.AccessDBProviderSample05 -
Move-Item
및Join-Path
cmdlet에 대한 호출을 지원하기 위해 컨테이너 메서드를 덮어쓰는 방법을 보여 줍니다. 이러한 메서드는 사용자가 컨테이너 내에서 항목을 이동해야 하는 경우와 데이터 저장소에 중첩된 컨테이너가 포함된 경우 구현되어야 합니다. 이 샘플의 공급자 클래스는 NavigationCmdletProvider 클래스에서 파생됩니다.AccessDBProviderSample06 -
Clear-Content
,Get-Content
및Set-Content
cmdlet에 대한 호출을 지원하기 위해 콘텐츠 메서드를 덮어쓰는 방법을 보여 줍니다. 사용자가 데이터 저장소에 있는 항목의 콘텐츠를 관리해야 하는 경우 이러한 메서드를 구현해야 합니다. 이 샘플의 공급자 클래스는 NavigationCmdletProvider 클래스에서 파생되며 IContentCmdletProvider 인터페이스를 구현합니다.
PowerShell