다음을 통해 공유


Windows PowerShell 공급자 디자인

제품 또는 구성에서 사용자가 탐색하거나 찾아보려는 데이터베이스와 같은 저장된 데이터 집합을 노출하는 경우 Windows PowerShell 공급자를 구현해야 합니다. 또한 제품이 다단계 컨테이너가 아니더라도 컨테이너를 제공하는 경우 Windows PowerShell 공급자를 구현하는 것이 좋습니다. 예를 들어 cmdlet 동사 복사, 이동, 이름 바꾸기, 새로 만들기 또는 제거가 제품 또는 구성 데이터에 대한 작업으로 적합한 경우 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날짜 버전으로 호출합니다. 공급자 인프라는 사용자가 -PassThru 매개 변수를 지정하는 경우와 같이 항목 개체를 파이프라인에 전달해야 하는지 여부를 결정합니다. 가장 up-to-date 항목을 검색하는 것이 비용이 많이 드는 작업(성능 측면에서)인 경우 Context.PassThru 속성을 테스트하여 결과 항목을 실제로 작성해야 하는지 확인할 수 있습니다.

공급자에 대한 기본 클래스 선택

Windows PowerShell은 사용자 고유의 Windows PowerShell 공급자를 구현하는 데 사용할 수 있는 다양한 기본 클래스를 제공합니다. 공급자를 디자인할 때 요구 사항에 가장 적합한 기본 클래스를 선택합니다.

각 Windows PowerShell 공급자 기본 클래스는 cmdlet 집합을 사용할 수 있도록 합니다. 이 섹션에서는 cmdlet에 대해 설명하지만 해당 매개 변수는 설명하지 않습니다.

세션 상태를 사용하여 Windows PowerShell 런타임은 Get-Location, Set-Location, Pop-LocationPush-Location cmdlet과 같은 특정 Windows PowerShell 공급자에서 여러 위치 cmdlet을 사용할 수 있도록 합니다. Get-Help cmdlet을 사용하여 이러한 위치 cmdlet에 대한 정보를 가져올 수 있습니다.

CmdletProvider 기본 클래스

System.Management.Automation.Provider.CmdletProvider 클래스는 기본 Windows PowerShell 공급자를 정의합니다. 이 클래스는 공급자 선언을 지원하고 모든 Windows PowerShell 공급자가 사용할 수 있는 다양한 속성과 메서드를 제공합니다. 클래스는 세션에 사용 가능한 모든 공급자를 나열하기 위해 Get-PSProvider cmdlet에 의해 호출됩니다. 이 cmdlet의 구현은 세션 상태에 의해 제공됩니다.

비고

Windows PowerShell 공급자는 모든 Windows PowerShell 언어 범위에서 사용할 수 있습니다.

DriveCmdletProvider 기본 클래스

System.Management.Automation.Provider.DriveCmdletProvider 클래스는 새 드라이브를 추가하고, 기존 드라이브를 제거하고, 기본 드라이브를 초기화하는 작업을 지원하는 Windows PowerShell 드라이브 공급자를 정의합니다. 예를 들어 Windows PowerShell에서 제공하는 FileSystem 공급자는 하드 드라이브 및 CD/DVD 디바이스 드라이브와 같이 탑재된 모든 볼륨에 대한 드라이브를 초기화합니다.

이 클래스는 System.Management.Automation.Provider.CmdletProvider 기본 클래스에서 파생됩니다. 다음 표에서는 이 클래스에서 노출하는 cmdlet을 나열합니다. 나열된 cmdlet 외에도 Get-PSDrive cmdlet(세션 상태에 의해 노출됨)은 사용 가능한 드라이브를 검색하는 데 사용되는 관련 cmdlet입니다.

cmdlet 정의
New-PSDrive 세션에 대한 새 드라이브를 만들고 드라이브 정보를 스트리밍합니다.
Remove-PSDrive 세션에서 드라이브를 제거합니다.

ItemCmdletProvider 기본 클래스

System.Management.Automation.Provider.ItemCmdletProvider 클래스는 데이터 저장소의 개별 항목에 대한 작업을 수행하는 Windows PowerShell 항목 공급자를 정의하며 컨테이너 또는 탐색 기능을 가정하지 않습니다. 이 클래스는 System.Management.Automation.Provider.DriveCmdletProvider 기본 클래스에서 파생됩니다. 다음 표에서는 이 클래스에서 노출하는 cmdlet을 나열합니다.

cmdlet 정의
Clear-Item 지정된 위치에서 항목의 현재 콘텐츠를 지우고 공급자가 지정한 "clear" 값으로 바꿉니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.
Get-Item 지정된 위치에서 항목을 검색하고 결과 개체를 스트림합니다.
Invoke-Item 지정된 경로에서 항목에 대한 기본 동작을 호출합니다.
Set-Item 지정된 위치에 지정된 값을 사용하여 항목을 설정합니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.
Resolve-Path Windows PowerShell 경로에 대한 와일드카드를 확인하고 경로 정보를 스트리밍합니다.
Test-Path 지정된 경로에 대한 테스트를 수행하고 있는 경우 true 반환하고, 그렇지 않으면 false. 이 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 정의
Copy-Item 한 위치에서 다른 위치로 항목을 복사합니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.
Get-ChildItem 지정된 위치에서 자식 항목을 검색하고 개체로 스트림합니다.
New-Item 지정된 위치에 새 항목을 만들고 결과 개체를 스트림합니다.
Remove-Item 지정된 위치에서 항목을 제거합니다.
Rename-Item 지정된 위치에 있는 항목의 이름을 바꿉니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.

System.Management.Automation.Provider.NavigationCmdletProvider 클래스는 둘 이상의 컨테이너를 사용하는 항목에 대한 작업을 수행하는 Windows PowerShell 탐색 공급자를 정의합니다. 이 클래스는 System.Management.Automation.Provider.ContainerCmdletProvider 기본 클래스에서 파생됩니다. 다음 표에서는 이 클래스에서 노출하는 cmdlet을 나열합니다.

cmdlet 정의
Combine-Path 경로 간에 공급자별 구분 기호를 사용하여 두 경로를 단일 경로로 결합합니다. 이 cmdlet은 문자열을 스트림합니다.
Move-Item 항목을 지정된 위치로 이동합니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.

관련 cmdlet은 Windows PowerShell에서 제공하는 기본 Parse-Path cmdlet입니다. 이 cmdlet은 Parent 매개 변수를 지원하기 위해 Windows PowerShell 경로를 구문 분석하는 데 사용할 수 있습니다. 부모 경로 문자열을 스트리밍합니다.

지원할 공급자 인터페이스 선택

Windows PowerShell 기본 클래스 중 하나에서 파생되는 것 외에도 Windows PowerShell 공급자는 다음 공급자 인터페이스 중 하나 이상에서 파생하여 다른 기능을 지원할 수 있습니다. 이 섹션에서는 이러한 인터페이스와 각 인터페이스에서 지원하는 cmdlet을 정의합니다. 인터페이스 지원 cmdlet에 대한 매개 변수는 설명하지 않습니다. cmdlet 매개 변수 정보는 Get-CommandGet-Help cmdlet을 사용하여 온라인으로 사용할 수 있습니다.

IContentCmdletProvider

System.Management.Automation.Provider.IContentCmdletProvider 인터페이스는 데이터 항목의 콘텐츠에 대한 작업을 수행하는 콘텐츠 공급자를 정의합니다. 다음 표에서는 이 인터페이스에서 노출하는 cmdlet을 나열합니다.

cmdlet 정의
Add-Content 지정된 항목의 내용에 표시된 값 길이를 추가합니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.
Clear-Content 지정된 항목의 내용을 "clear" 값으로 설정합니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.
Get-Content 지정된 항목의 내용을 검색하고 결과 개체를 스트리밍합니다.
Set-Content 지정된 항목의 기존 콘텐츠를 바꿉니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.

IPropertyCmdletProvider

System.Management.Automation.Provider.IPropertyCmdletProvider 인터페이스는 데이터 저장소의 항목 속성에 대한 작업을 수행하는 Windows PowerShell 공급자 속성을 정의합니다. 다음 표에서는 이 인터페이스에서 노출하는 cmdlet을 나열합니다.

비고

이러한 cmdlet의 Path 매개 변수는 속성을 식별하는 대신 항목의 경로를 나타냅니다.

cmdlet 정의
Clear-ItemProperty 지정된 항목의 속성을 "clear" 값으로 설정합니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.
Get-ItemProperty 지정된 항목에서 속성을 검색하고 결과 개체를 스트림합니다.
Set-ItemProperty 지정된 값으로 지정된 항목의 속성을 설정합니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.

IDynamicPropertyCmdletProvider

System.Management.Automation.Provider.IPropertyCmdletProvider파생된 System.Management.Automation.Provider.IDynamicPropertyCmdletProvider 인터페이스는 지원되는 cmdlet에 대한 동적 매개 변수를 지정하는 공급자를 정의합니다. 이 유형의 공급자는 런타임에 속성을 정의할 수 있는 작업(예: 새 속성 작업)을 처리합니다. 정적으로 정의된 속성이 있는 항목에서는 이러한 작업을 수행할 수 없습니다. 다음 표에서는 이 인터페이스에서 노출하는 cmdlet을 나열합니다.

cmdlet 정의
Copy-ItemProperty 지정된 항목에서 다른 항목으로 속성을 복사합니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.
Move-ItemProperty 지정된 항목에서 다른 항목으로 속성을 이동합니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.
New-ItemProperty 지정된 항목에 속성을 만들고 결과 개체를 스트림합니다.
Remove-ItemProperty 지정된 항목의 속성을 제거합니다.
Rename-ItemProperty 지정된 항목의 속성 이름을 바꿉니다. 이 cmdlet은 PassThru 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다.

ISecurityDescriptorCmdletProvider

System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider 인터페이스는 공급자에 보안 설명자 기능을 추가합니다. 이 인터페이스를 사용하면 사용자가 데이터 저장소의 항목에 대한 보안 설명자 정보를 가져와서 설정할 수 있습니다. 다음 표에서는 이 인터페이스에서 노출하는 cmdlet을 나열합니다.

cmdlet 정의
Get-Acl ACL(액세스 제어 목록)에 포함된 정보를 검색합니다. 이 정보는 운영 체제 리소스(예: 파일 또는 개체)를 지키는 데 사용되는 보안 설명자의 일부입니다.
Set-Acl ACL에 대한 정보를 설정합니다. 지정된 경로에 대해 지정된 항목의 System.Security.AccessControl.ObjectSecurity 인스턴스 형식입니다. 이 cmdlet은 Windows PowerShell 공급자가 보안 정보 설정을 지원하는 경우 레지스트리 또는 다른 공급자 항목의 파일, 키 및 하위 키에 대한 정보를 설정할 수 있습니다.

또한 참조하십시오

Windows PowerShell 공급자 만들기

Windows PowerShell 작동 방식

Windows PowerShell SDK