다음을 통해 공유


기본 Windows PowerShell 공급자 만들기

이 항목은 Windows PowerShell 공급자를 만드는 방법을 알아보기 위한 시작점입니다. 여기에 설명된 기본 공급자는 공급자를 시작하고 중지하는 방법을 제공하며, 이 공급자는 데이터 저장소에 액세스하거나 데이터 저장소에서 데이터를 얻거나 설정하는 방법을 제공하지 않지만 모든 공급자가 요구하는 기본 기능을 제공합니다.

앞에서 설명한 것처럼 여기에 설명된 기본 공급자는 공급자를 시작하고 중지하는 메서드를 구현합니다. Windows PowerShell 런타임은 이러한 메서드를 호출하여 공급자를 초기화하고 초기화하지 않습니다.

비고

Windows PowerShell에서 제공하는 AccessDBSampleProvider01.cs 파일에서 이 공급자의 샘플을 찾을 수 있습니다.

Windows PowerShell 공급자 클래스 정의

Windows PowerShell 공급자를 만드는 첫 번째 단계는 .NET 클래스를 정의하는 것입니다. 이 기본 공급자는 System.Management.Automation.Provider.CmdletProvider 기본 클래스에서 파생되는 AccessDBProvider 클래스를 정의합니다.

공급자 클래스를 API 네임스페이스의 Providers 네임스페이스(예: xxx.PowerShell.Providers)에 배치하는 것이 좋습니다. 이 공급자는 모든 Windows PowerShell 공급자 샘플이 실행되는 Microsoft.Samples.PowerShell.Provider 네임스페이스를 사용합니다.

비고

Windows PowerShell 공급자에 대한 클래스는 명시적으로 공용으로 표시되어야 합니다. 공용으로 표시되지 않은 클래스는 기본적으로 내부로 설정되며 Windows PowerShell 런타임에서 찾을 수 없습니다.

이 기본 공급자에 대한 클래스 정의는 다음과 같습니다.

[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider

클래스 정의 바로 앞에 [CmdletProvider()] 구문을 사용하여 System.Management.Automation.Provider.CmdletProviderAttribute 특성을 선언해야 합니다.

필요한 경우 클래스를 추가로 선언하도록 특성 키워드를 설정할 수 있습니다. 여기에 선언된 System.Management.Automation.Provider.CmdletProviderAttribute 특성에는 두 개의 매개 변수가 포함됩니다. 첫 번째 특성 매개 변수는 사용자가 나중에 수정할 수 있는 공급자의 기본 이름을 지정합니다. 두 번째 매개 변수는 명령 처리 중에 공급자가 Windows PowerShell 런타임에 노출하는 Windows PowerShell 정의 기능을 지정합니다. 공급자 기능에 사용할 수 있는 값은 System.Management.Automation.Provider.ProviderCapabilities 열거형으로 정의됩니다. 기본 공급자이므로 기능을 지원하지 않습니다.

비고

Windows PowerShell 공급자의 정규화된 이름에는 공급자 등록 시 Windows PowerShell에서 결정한 어셈블리 이름 및 기타 특성이 포함됩니다.

Provider-Specific 상태 정보 정의

System.Management.Automation.Provider.CmdletProvider 기본 클래스 및 모든 파생 클래스는 Windows PowerShell 런타임이 필요에 따라 공급자 인스턴스를 만들기 때문에 상태 비저장 클래스로 간주됩니다. 따라서 공급자가 공급자별 데이터에 대한 모든 제어 및 상태 유지 관리가 필요한 경우 System.Management.Automation.ProviderInfo 클래스에서 클래스를 파생해야 합니다. 파생 클래스는 Windows PowerShell 런타임이 System.Management.Automation.Provider.CmdletProvider.Start* 메서드를 호출하여 공급자를 초기화할 때 공급자별 데이터에 액세스할 수 있도록 상태를 유지하는 데 필요한 멤버를 정의해야 합니다.

Windows PowerShell 공급자는 연결 기반 상태를 유지할 수도 있습니다. 연결 상태를 유지하는 방법에 대한 자세한 내용은 PowerShell 드라이브 공급자만들기를 참조하세요.

공급자 초기화

공급자를 초기화하기 위해 Windows PowerShell 런타임은 Windows PowerShell이 시작될 때 System.Management.Automation.Provider.CmdletProvider.Start* 메서드를 호출합니다. 대부분의 경우 공급자는 공급자를 설명하는 System.Management.Automation.ProviderInfo 개체를 반환하는 이 메서드의 기본 구현을 사용할 수 있습니다. 그러나 초기화 정보를 추가하려는 경우 공급자에게 전달되는 System.Management.Automation.ProviderInfo 개체의 수정된 버전을 반환하는 고유한 System.Management.Automation.Provider.CmdletProvider.Start* 메서드를 구현해야 합니다. 일반적으로 이 메서드는 제공된 System.Management.Automation.ProviderInfo 개체 또는 다른 초기화 정보가 포함된 수정된 System.Management.Automation.ProviderInfo 개체를 반환해야 합니다.

이 기본 공급자는 이 메서드를 재정의하지 않습니다. 그러나 다음 코드는 이 메서드의 기본 구현을 보여줍니다.

공급자는 공급자별 데이터 상태 정의설명된 대로 공급자별 정보의 상태를 유지할 수 있습니다. 이 경우 구현은 System.Management.Automation.Provider.CmdletProvider.Start* 메서드를 재정의하여 파생 클래스의 인스턴스를 반환해야 합니다.

동적 매개 변수 시작

System.Management.Automation.Provider.CmdletProvider.Start* 메서드의 공급자 구현에는 추가 매개 변수가 필요할 수 있습니다. 이 경우 공급자는 System.Management.Automation.Provider.CmdletProvider.StartDynamicParameters* 메서드를 재정의하고 cmdlet 클래스 또는 System.Management.Automation.RuntimeDefinedParameterDictionary 개체와 유사한 구문 분석 특성이 있는 속성과 필드가 있는 개체를 반환해야 합니다.

이 기본 공급자는 이 메서드를 재정의하지 않습니다. 그러나 다음 코드는 이 메서드의 기본 구현을 보여줍니다.

공급자 초기화 해제

Windows PowerShell 공급자가 사용하는 리소스를 해제하려면 공급자가 고유한 System.Management.Automation.Provider.CmdletProvider.Stop* 메서드를 구현해야 합니다. 이 메서드는 Windows PowerShell 런타임에 의해 호출되어 세션 종료 시 공급자를 초기화하지 않습니다.

이 기본 공급자는 이 메서드를 재정의하지 않습니다. 그러나 다음 코드는 이 메서드의 기본 구현을 보여줍니다.

코드 샘플

전체 샘플 코드는 AccessDbProviderSample01 코드 샘플참조하세요.

Windows PowerShell 공급자 테스트

Windows PowerShell 공급자가 Windows PowerShell에 등록되면 명령줄에서 지원되는 cmdlet을 실행하여 테스트할 수 있습니다. 이 기본 공급자의 경우 새 셸을 실행하고 Get-PSProvider cmdlet을 사용하여 공급자 목록을 검색하고 AccessDb 공급자가 있는지 확인합니다.

Get-PSProvider

다음 출력이 나타납니다.

Name                 Capabilities                  Drives
----                 ------------                  ------
AccessDb             None                          {}
Alias                ShouldProcess                 {Alias}
Environment          ShouldProcess                 {Env}
FileSystem           Filter, ShouldProcess         {C, Z}
Function             ShouldProcess                 {function}
Registry             ShouldProcess                 {HKLM, HKCU}

또한 참조하십시오

Windows PowerShell 공급자 만들기

Windows PowerShell 공급자 디자인하는