제품이나 구성이 사용자가 탐색하거나 탐색하고 싶어 할 데이터베이스 같은 저장된 데이터 집합을 노출한다면 Windows PowerShell 제공자를 구현해야 합니다. 또한, 제품이 다단계 컨테이너가 아니더라도 컨테이너를 제공한다면 Windows PowerShell 제공자를 구현하는 것이 합리적입니다. 예를 들어, cmdlet 동사 Copy, Move, Rename, New, Remove 등이 제품이나 구성 데이터에 대해 의미가 있다면 Windows PowerShell 컨테이너 프로바이저를 구현하는 것이 좋습니다.
Windows PowerShell 경로가 제공자를 식별합니다
Windows PowerShell 런타임은 적절한 Windows PowerShell 제공자에 접근하기 위해 Windows PowerShell 경로를 사용합니다. cmdlet이 이 경로 중 하나를 지정하면, 런타임은 관련 데이터 저장소에 접근하기 위해 어떤 공급자를 사용해야 하는지 알게 됩니다. 이 경로에는 드라이브 자격 경로, 제공자 자격 경로, 공급자 직접 경로, 공급자-내부 경로가 포함됩니다. 각 Windows PowerShell 제공자는 이러한 경로 중 하나 이상을 지원해야 합니다.
Windows PowerShell 경로에 대한 자세한 내용은 Windows PowerShell 작동 방식을 참조하세요.
Drive-Qualified 경로 정의
사용자가 물리적 드라이브에 위치한 데이터에 접근할 수 있도록 하려면, Windows PowerShell 제공자는 드라이브 인증 경로를 지원해야 합니다. 이 경로는 드라이브 이름 뒤에 콜론(:), 예를 들어 mydrive:\abc\bar)로 시작합니다.
Provider-Qualified 경로 정의
Windows PowerShell 런타임이 제공자를 초기화하고 초기화하지 않으려면, Windows PowerShell 제공자가 제공자 자격 경로를 지원해야 합니다. 예를 들어, FileSystem:\\uncshare\abc\bar는 Windows PowerShell에서 제공하는 FileSystem 제공자의 제공자 자격 경로입니다.
Provider-Direct 경로 정의
Windows PowerShell 제공자에 원격 접근을 허용하려면, 현재 위치의 Windows PowerShell 제공자로 직접 전달하는 공급자-직접 경로를 지원해야 합니다. 예를 들어, 레지스트리 Windows PowerShell 제공자는 \\server\regkeypath를 제공자 직접 경로로 사용할 수 있습니다.
Provider-Internal 경로 정의
제공자 cmdlet이 비Windows PowerShell 애플리케이션 프로그래밍 인터페이스(API)를 사용해 데이터에 접근할 수 있도록 하려면, Windows PowerShell 제공자는 제공자-내부 경로를 지원해야 합니다. 이 경로는 제공자 자격 경로의 "::" 뒤에 표시됩니다. 예를 들어, FileSystem Windows PowerShell 제공자의 제공자-내부 경로는 \\uncshare\abc\bar입니다.
저장된 데이터 변경
기본 데이터 저장소를 수정하는 메서드를 덮어쓸 때는 항상 System.Management.Automation.Provider.CmdletProvider.WriteItemObject* 메서드를 호출하라, 해당 메서드에 의해 변경된 아이템의 가장 up-to-date 버전이 포함되어 있습니다. 제공자 인프라는 사용자가 -PassThru 매개변수를 지정할 때 아이템 객체를 파이프라인에 전달해야 하는지 결정합니다. 가장 up-to-date 항목을 가져오는 것이 성능상 비용이 많이 드는 작업이라면, Context.PassThru 속성을 테스트해 실제로 그 결과물을 작성해야 하는지 확인할 수 있습니다.
제공자의 기본 클래스를 선택하세요
Windows PowerShell은 자신만의 Windows PowerShell 제공자를 구현할 수 있는 여러 기본 클래스를 제공합니다. 공급자를 설계할 때는 이 섹션에서 설명한 기본 클래스를 선택하세요.
각 Windows PowerShell 제공자 기본 클래스는 일련의 cmdlet을 제공합니다. 이 섹션에서는 명령어를 설명하지만, 그 매개변수는 설명하지 않습니다.
세션 상태를 사용하여 Windows PowerShell 런타임은 , Set-LocationPop-LocationPush-Location cmdlet과 같은 Get-Location특정 Windows PowerShell 제공자에게 여러 위치 명령어를 제공합니다. 이 명령어를 Get-Help 사용해 이 위치에 대한 정보를 얻을 수 있습니다.
CmdletProvider 기본 클래스
System.Management.Automation.Provider.CmdletProvider 클래스는 기본 Windows PowerShell 제공자를 정의합니다. 이 클래스는 제공자 선언을 지원하며, 모든 Windows PowerShell 제공자가 사용할 수 있는 여러 속성과 메서드를 제공합니다.
이 클래스는 Get-PSProvider 명령어가 호출하여 세션에 사용할 수 있는 모든 제공자를 나열합니다.
이 명령어의 구현은 세션 상태에서 제공됩니다.
비고
Windows PowerShell 제공자는 모든 Windows PowerShell 언어 범위에 제공됩니다.
DriveCmdletProvider 기본 클래스
System.Management.Automation.Provider.DriveCmdletProvider 클래스는 새 드라이브 추가, 기존 드라이브 제거, 기본 드라이브 초기화 작업을 지원하는 Windows PowerShell 드라이브 제공자를 정의합니다. 예를 들어, Windows PowerShell에서 제공하는 FileSystem 제공자는 하드 드라이브나 CD/DVD 장치 드라이브 등 마운트된 모든 볼륨의 드라이브를 초기화합니다.
이 클래스는 System.Management.Automation.Provider.CmdletProvider 기본 클래스에서 파생되었습니다. 다음 표는 이 클래스가 공개하는 cmdlet들을 나열합니다. 나열된 것 외에도, Get-PSDrive 세션 상태에 노출된 cmdlet은 사용 가능한 드라이브를 가져오는 데 사용되는 관련 명령어입니다.
| Cmdlet (커맨드렛) | Definition |
|---|---|
New-PSDrive |
세션용 새 드라이브를 생성하고 드라이브 정보를 스트리밍합니다. |
Remove-PSDrive |
세션에서 드라이브를 제거합니다. |
ItemCmdletProvider 기본 클래스
System.Management.Automation.Provider.ItemCmdletProvider 클래스는 데이터 저장소의 개별 항목에 대해 연산을 수행하는 Windows PowerShell 아이템 제공자를 정의하며, 컨테이너나 내비게이션 기능을 가정하지 않습니다. 이 클래스는 System.Management.Automation.Provider.DriveCmdletProvider 기본 클래스에서 파생되었습니다. 다음 표는 이 클래스가 공개하는 cmdlet들을 나열합니다.
| Cmdlet (커맨드렛) | Definition |
|---|---|
Clear-Item |
지정된 위치의 현재 항목 내용을 삭제하고, 제공자가 지정한 "clear" 값으로 대체합니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
Get-Item |
지정된 위치에서 아이템을 가져와 결과물들을 스트리밍합니다. |
Invoke-Item |
지정된 경로에서 아이템의 기본 동작을 호출합니다. |
Set-Item |
지정된 위치에 표시된 값으로 항목을 설정합니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
Resolve-Path |
Windows PowerShell 경로의 와일드카드를 해결하고 경로 정보를 스트리밍합니다. |
Test-Path |
지정된 경로를 테스트하고, 경로가 존재하는지, false 그렇지 않은지 반환 true 합니다. 이 cmdlet은 System.Management.Automation.Provider.CmdletProvider.WriteItemObject* 메서드의 매개변수를 IsContainer 지원하도록 구현되었습니다. |
ContainerCmdletProvider 기본 클래스
System.Management.Automation.Provider.ContainerCmdletProvider 클래스는 데이터 저장소 항목에 대한 컨테이너를 사용자에게 노출하는 Windows PowerShell 컨테이너 프로바이더를 정의합니다. Windows PowerShell 컨테이너 제공자는 아이템이 포함된 컨테이너가 하나(중첩된 컨테이너가 아님)가 있을 때만 사용할 수 있다는 점을 유념하세요. 중첩된 컨테이너가 있다면 Windows PowerShell 내비게이션 제공자를 구현해야 합니다.
이 클래스는 System.Management.Automation.Provider.ItemCmdletProvider 기본 클래스에서 파생되었습니다. 다음 표는 이 클래스가 구현하는 cmdlet을 정의합니다.
| Cmdlet (커맨드렛) | Definition |
|---|---|
Copy-Item |
한 장소에서 다른 장소로 아이템을 복사합니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
Get-ChildItem |
지정된 위치에서 자식 항목을 가져와 객체로 스트리밍합니다. |
New-Item |
지정된 위치에 새 항목을 생성하고, 결과 객체를 스트리밍합니다. |
Remove-Item |
지정된 위치에서 아이템을 제거합니다. |
Rename-Item |
지정된 위치에서 아이템 이름을 변경하세요. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
NavigationCmdletProvider 기본 클래스
System.Management.Automation.Provider.NavigationCmdletProvider 클래스는 여러 컨테이너를 사용하는 항목에 대해 작업을 수행하는 Windows PowerShell 내비게이션 제공자를 정의합니다. 이 클래스는 System.Management.Automation.Provider.ContainerCmdletProvider 기본 클래스에서 파생되었습니다. 다음 표는 이 클래스가 공개하는 cmdlet들을 나열합니다.
| Cmdlet (커맨드렛) | Definition |
|---|---|
Combine-Path |
두 경로를 하나의 경로로 결합하며, 경로 간 제공자 전용 구분자를 사용합니다. 이 커들렛은 문자열을 스트리밍합니다. |
Move-Item |
아이템을 지정된 위치로 이동시킵니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
관련 명령어는 Windows PowerShell에서 제공하는 기본 Parse-Path cmdlet입니다. 이 cmdlet은 매개변수를 지원 Parent 하기 위해 Windows PowerShell 경로를 파싱하는 데 사용할 수 있습니다. 이 코드는 부모 경로 문자열을 스트리밍합니다.
지원할 공급자 인터페이스 선택
Windows PowerShell 기본 클래스 중 하나에서 파생하는 것 외에도, Windows PowerShell 제공자는 다음 제공자 인터페이스 중 하나 이상에서 파생하여 다른 기능을 지원할 수 있습니다. 이 섹션에서는 각 인터페이스와 각 인터페이스가 지원하는 cmdlet을 정의합니다. 인터페이스 지원 cmdlet의 매개변수는 설명하지 않습니다. Cmdlet 매개변수 정보는 온라인에서 와 Get-Help cmdlets Get-Command 를 통해 확인할 수 있습니다.
IContentCmdletProvider
System.Management.Automation.Provider.IContentCmdletProvider 인터페이스는 데이터 항목의 콘텐츠에 대해 작업을 수행하는 콘텐츠 제공자를 정의합니다. 다음 표는 이 인터페이스에서 노출된 cmdlet들을 나열합니다.
| Cmdlet (커맨드렛) | Definition |
|---|---|
Add-Content |
지정된 항목의 내용에 표시된 값 길이를 덧붙입니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
Clear-Content |
지정된 항목의 내용을 "클리어" 값으로 설정합니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
Get-Content |
지정된 항목의 내용을 검색하여 생성된 객체를 스트리밍합니다. |
Set-Content |
지정된 항목의 기존 콘텐츠를 대체합니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
IPropertyCmdletProvider
System.Management.Automation.Provider.IPropertyCmdletProvider 인터페이스는 데이터 저장소 내 항목의 속성에 대해 작업을 수행하는 Windows PowerShell 프로바이저 속성을 정의합니다. 다음 표는 이 인터페이스에서 노출된 cmdlet들을 나열합니다.
비고
이 cmdlet의 매개변수는 Path 속성 식별 대신 항목으로 가는 경로를 나타냅니다.
| Cmdlet (커맨드렛) | Definition |
|---|---|
Clear-ItemProperty |
지정된 항목의 속성을 "clear" 값으로 설정합니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
Get-ItemProperty |
지정된 항목에서 속성을 가져와 결과물들을 스트리밍합니다. |
Set-ItemProperty |
지정된 항목의 속성을 지정된 값으로 설정합니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
IDynamicPropertyCmdletProvider
System.Management.Automation.Provider.IDynamicPropertyCmdletProvider 인터페이스는 System.Management.Automation.Provider.IPropertyCmdletProvider에서 파생되었으며, 지원되는 cmdlet에 대한 동적 매개변수를 지정하는 공급자를 정의합니다. 이 유형의 제공자는 실행 시 속성이 정의될 수 있는 연산을 처리하며, 예를 들어 새로운 속성 연산을 만듭니다. 정적으로 정의된 속성을 가진 항목에서는 이러한 연산이 불가능합니다. 다음 표는 이 인터페이스에서 노출된 cmdlet들을 나열합니다.
| Cmdlet (커맨드렛) | Definition |
|---|---|
Copy-ItemProperty |
지정된 항목에서 다른 항목으로 속성을 복사합니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
Move-ItemProperty |
지정된 항목에서 다른 항목으로 속성을 이동시킵니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
New-ItemProperty |
지정된 항목에 속성을 생성하고 결과물들을 스트리밍합니다. |
Remove-ItemProperty |
지정된 항목에 대한 속성을 제거합니다. |
Rename-ItemProperty |
지정된 항목의 속성을 이름을 변경합니다. 이 명령어는 매개변수가 지정되지 않는 한 PassThru 출력 객체를 파이프라인을 통과시키지 않습니다. |
ISecurityDescriptorCmdletProvider
System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider 인터페이스는 제공자에게 보안 디스크립터 기능을 추가합니다. 이 인터페이스는 사용자가 데이터 저장소 내 항목에 대한 보안 디스크립터 정보를 얻고 설정할 수 있게 합니다. 다음 표는 이 인터페이스에서 노출된 cmdlet들을 나열합니다.
| Cmdlet (커맨드렛) | Definition |
|---|---|
Get-Acl |
접근 제어 목록(ACL)에 포함된 정보를 검색하는데, ACL은 운영 체제 자원(예: 파일이나 객체)을 보호하는 보안 디스크립터의 일부입니다. |
Set-Acl |
ACL 정보를 설정합니다. 이는 지정된 경로에 지정된 항목에 System.Security.AccessControl.ObjectSecurity 인스턴스의 형태로 존재합니다. 이 명령어는 Windows PowerShell 제공자가 보안 정보 설정을 지원한다면 레지스트리 내 파일, 키, 서브키에 관한 정보를 설정할 수 있으며, 다른 제공자 항목도 설정할 수 있습니다. |