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-Location
및 Push-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 매개 변수를 지정하지 않는 한 파이프라인을 통해 출력 개체를 전달하지 않습니다. |
NavigationCmdletProvider 기본 클래스
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-Command
및 Get-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 SDK
PowerShell