다음을 통해 공유


Windows PowerShell 공급자 개요

Windows PowerShell 공급자를 사용하면 모든 데이터 저장소를 탑재된 드라이브처럼 파일 시스템처럼 노출할 수 있습니다. 예를 들어 기본 제공 레지스트리 공급자를 사용하면 컴퓨터의 c 드라이브를 탐색하는 것처럼 레지스트리를 탐색할 수 있습니다. 공급자는 파일 시스템을 탐색할 때 데이터 저장소의 데이터를 파일 및 디렉터리처럼 처리할 수 있도록 Item cmdlet(예: Get-Item, Set-Item등)을 재정의할 수도 있습니다. 공급자 및 드라이브 및 Windows PowerShell의 기본 제공 공급자에 대한 자세한 내용은 about_Providers참조하세요.

공급자 및 드라이브

공급자는 데이터 저장소에 액세스, 탐색 및 편집하는 데 사용되는 논리를 정의하고 드라이브는 공급자가 정의한 형식의 데이터 저장소(또는 데이터 저장소의 일부)에 대한 특정 진입점을 지정합니다. 예를 들어 레지스트리 공급자를 사용하면 레지스트리의 하이브 및 키에 액세스할 수 있으며 HKLM 및 HKCU 드라이브는 레지스트리 내에서 해당 하이브를 지정합니다. HKLM 및 HKCU 드라이브는 모두 레지스트리 공급자를 사용합니다.

공급자를 작성할 때 공급자를 사용할 수 있을 때 자동으로 생성되는 기본 드라이브 드라이브를 지정할 수 있습니다. 또한 해당 공급자를 사용하는 새 드라이브를 만드는 메서드를 정의합니다.

공급자 유형

여러 유형의 공급자가 있으며 각 공급자는 서로 다른 수준의 기능을 제공합니다. 공급자는 System.Management.Automation.SessionStateCategoryCmdletProvider 클래스의 하위 항목 중 하나에서 파생되는 클래스로 구현됩니다. 다양한 유형의 공급자에 대한 자세한 내용은 공급자 유형을 참조하세요.

공급자 cmdlet

공급자는 cmdlet에 해당하는 메서드를 구현하여 해당 공급자의 드라이브에서 사용할 때 해당 cmdlet에 대한 사용자 지정 동작을 만들 수 있습니다. 공급자 유형에 따라 다양한 cmdlet 집합을 사용할 수 있습니다. 공급자에서 사용자 지정에 사용할 수 있는 cmdlet의 전체 목록은 Provider cmdlet참조하세요.

공급자 경로

사용자는 파일 시스템과 같은 공급자 드라이브를 탐색합니다. 이 때문에 파일 시스템 탐색에 사용되는 경로에 해당하는 경로 구문을 예상합니다. 사용자가 공급자 cmdlet을 실행할 때 액세스할 항목의 경로를 지정합니다. 지정된 경로는 여러 가지 방법으로 해석할 수 있습니다. 공급자는 다음 경로 형식 중 하나 이상을 지원해야 합니다.

드라이브 정규화된 경로

드라이브 정규화된 경로는 항목 이름, 항목이 있는 컨테이너 및 하위 컨테이너 및 항목에 액세스하는 Windows PowerShell 드라이브의 조합입니다. (드라이브는 데이터 저장소에 액세스하는 데 사용되는 공급자에 의해 정의됩니다. 이 경로는 드라이브 이름 뒤에 콜론(:))으로 시작합니다. 예: Get-ChildItem C:

공급자 정규화된 경로

Windows PowerShell 엔진이 공급자를 초기화하고 초기화하지 못하게 하려면 공급자가 공급자 정규화된 경로를 지원해야 합니다. 예를 들어 사용자는 다음 공급자 정규화된 경로를 정의하므로 FileSystem 공급자를 초기화하고 초기화하지 FileSystem::\\uncshare\abc\bar수 있습니다.

공급자 직접 경로

Windows PowerShell 공급자에 대한 원격 액세스를 허용하려면 현재 위치에 대한 Windows PowerShell 공급자에 직접 전달하는 공급자 직접 경로를 지원해야 합니다. 예를 들어 레지스트리 Windows PowerShell 공급자는 공급자 직접 경로로 \\server\regkeypath 사용할 수 있습니다.

공급자 내부 경로

공급자 cmdlet이 비 Windows PowerShell API(애플리케이션 프로그래밍 인터페이스)를 사용하여 데이터에 액세스할 수 있도록 하려면 Windows PowerShell 공급자가 공급자 내부 경로를 지원해야 합니다. 이 경로는 공급자 정규화된 경로의 "::" 다음으로 표시됩니다. 예를 들어 FileSystem Windows PowerShell 공급자에 대한 공급자 내부 경로는 \\uncshare\abc\bar.

cmdlet 매개 변수 재정의

공급자에 의해 일부 공급자별 cmdlet의 동작을 재정의할 수 있습니다. 재정의할 수 있는 매개 변수 목록 및 공급자 클래스에서 매개 변수를 재정의하는 방법은 Provider cmdlet 매개 변수

동적 매개 변수

공급자는 사용자가 cmdlet의 정적 매개 변수 중 하나에 대해 특정 값을 지정할 때 공급자 cmdlet에 추가되는 동적 매개 변수를 정의할 수 있습니다. 공급자는 하나 이상의 동적 매개 변수 메서드를 구현하여 이 작업을 수행합니다. 동적 매개 변수를 추가하는 데 사용할 수 있는 cmdlet 매개 변수 목록과 이를 구현하는 데 사용되는 메서드는 Provider cmdlet 동적 매개 변수를 참조하세요.

공급자 기능

System.Management.Automation.Provider.ProviderCapabilities 열거형은 공급자가 지원할 수 있는 다양한 기능을 정의합니다. 여기에는 와일드카드를 사용하고, 항목을 필터링하고, 트랜잭션을 지원하는 기능이 포함됩니다. 공급자에 대한 기능을 지정하려면 System.Management.Automation.Provider.ProviderCapabilities 열거형의 값 목록을 추가합니다. 논리적 OR 작업과 결합됩니다. System.Management.Automation.Provider.CmdletProviderAttribute.ProviderCapabilities* 속성(특성의 두 번째 매개 변수)은 공급자 클래스에 대한 System.Management.Automation.Provider.CmdletProviderAttribute 특성입니다. 예를 들어 다음 특성은 공급자가 System.Management.Automation.Provider.ProviderCapabilitiesShouldProcessSystem.Management.Automation.Provider.ProviderCapabilitiesTransactions 기능을 지원한다고 지정합니다.

[CmdletProvider(RegistryProvider.ProviderName, ProviderCapabilities.ShouldProcess | ProviderCapabilities.Transactions)]

공급자 cmdlet 도움말

공급자를 작성할 때 지원하는 공급자 cmdlet에 대한 고유한 도움말을 구현할 수 있습니다. 여기에는 각 공급자 cmdlet에 대한 단일 도움말 항목 또는 공급자 cmdlet이 동적 매개 변수 사용에 따라 다르게 동작하는 경우의 도움말 항목의 여러 버전이 포함됩니다. 공급자 cmdlet 관련 도움말을 지원하려면 공급자가 System.Management.Automation.Provider.ICmdletProviderSupportsHelp 인터페이스를 구현해야 합니다.

Windows PowerShell 엔진은 System.Management.Automation.Provider.ICmdletProviderSupportsHelp.GetHelpMaml* 메서드를 호출하여 공급자 cmdlet에 대한 도움말 항목을 표시합니다. 엔진은 사용자가 Get-Help cmdlet을 실행할 때 지정한 cmdlet의 이름과 사용자의 현재 경로를 제공합니다. 공급자가 서로 다른 드라이브에 대해 동일한 공급자 cmdlet의 다른 버전을 구현하는 경우 현재 경로가 필요합니다. 메서드는 cmdlet 도움말에 대한 XML을 포함하는 문자열을 반환해야 합니다.

도움말 파일의 콘텐츠는 PSMAML XML을 사용하여 작성됩니다. 독립 실행형 cmdlet에 대한 도움말 콘텐츠를 작성하는 데 사용되는 것과 동일한 XML 스키마입니다. 사용자 지정 cmdlet 도움말의 콘텐츠를 CmdletHelpPaths 요소 아래에 있는 공급자의 도움말 파일에 추가합니다. 다음 예제에서는 단일 공급자 cmdlet의 command 요소를 보여 줍니다. 공급자가 공급자 cmdlet의 이름을 지정하는 방법을 보여 줍니다. 지원

<CmdletHelpPaths>
  <command:command>
    <command:details>
      <command:name>ProviderCmdletName</command:name>
      <command:verb>Verb</command:verb>
      <command:noun>Noun</command:noun>
    <command:details>
  </command:command>
<CmdletHelpPath>

또한 참조하십시오

windows PowerShell 공급자 기능

Provider Cmdlet

Windows PowerShell 공급자 작성