이 주제는 사용자가 데이터 저장소 내 항목의 속성을 조작할 수 있도록 제공하는 공급자를 만드는 방법을 설명합니다. 따라서 이러한 유형의 제공자를 Windows PowerShell 속성 제공자라고 부릅니다. 예를 들어, Windows PowerShell에서 제공하는 레지스트리 제공자는 레지스트리 키 값을 레지스트리 키 항목의 속성으로 처리합니다. 이 유형의 제공자는 .NET 클래스 구현에 System.Management.Automation.Provider.IPropertyCmdletProvider 인터페이스를 추가해야 합니다.
비고
Windows PowerShell은 Windows PowerShell 제공자를 개발하는 데 사용할 수 있는 템플릿 파일을 제공합니다. TemplateProvider.cs 파일은 Microsoft Windows 소프트웨어 개발 키트(Windows Vista 및 .NET Framework 3.0 런타임 컴포넌트)에서 이용할 수 있습니다. 다운로드 방법은 Windows PowerShell 설치 방법과 Windows PowerShell SDK를 다운로드하세요. 다운로드한 템플릿은 PowerShell Samples> 디렉토리에서< 이용할 수 있습니다. 이 파일을 복사해서 새 Windows PowerShell 제공자를 만드는 데 사용하세요. 필요 없는 기능은 제거하세요. 다른 Windows PowerShell 제공자 구현에 대한 자세한 내용은 'Windows PowerShell Provider를 설계하기'를 참조하세요.
주의
속성 제공자의 메서드는 System.Management.Automation.Provider.CmdletProvider.Writepropertyobject* 메서드를 사용해 객체를 작성해야 합니다.
Windows PowerShell 제공자 정의
속성 제공자는 System.Management.Automation.Provider.IPropertyCmdletProvider 인터페이스를 지원하는 .NET 클래스를 생성해야 합니다. 다음은 Windows PowerShell에서 제공하는 TemplateProvider.cs 파일의 기본 클래스 선언입니다.
기본 기능 정의
System.Management.Automation.Provider.IPropertyCmdletProvider 인터페이스는 System.Management.Automation.Provider.DriveCmdletProvider 클래스를 제외한 모든 제공자 기본 클래스에 연결할 수 있습니다. 사용 중인 기본 클래스에서 요구하는 기본 기능을 추가하세요. 기본 클래스에 대한 자세한 내용은 'Windows PowerShell Provider를 설계하기'를 참조하세요.
속성 조회
속성을 가져오려면, 제공자는 명령어 호출 Get-ItemProperty 을 지원하기 위해 System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* 메서드를 구현해야 합니다. 이 방법은 지정된 제공자-내부 경로(완전 정식 경로)에 위치한 항목의 속성을 가져옵니다.
매개변수는 providerSpecificPickList 어떤 속성을 가져와야 함을 나타냅니다. 이 매개변수가 null 또는 비어 있으면 메서드는 모든 속성을 가져와야 합니다. 또한, System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* 는 가져온 속성의 속성 가방을 나타내는 System.Management.Automation.PSObject 객체의 인스턴스를 작성합니다. 메서드는 아무것도 반환하지 않을 것입니다.
System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* 구현은 선택 리스트 내 각 요소에 대해 속성 이름의 와일드카드 확장을 지원하는 것이 권장됩니다. 이를 위해 System.Management.Automation.WildcardPattern 클래스를 사용하여 와일드카드 패턴 매칭을 수행합니다.
다음은 Windows PowerShell에서 제공하는 TemplateProvider.cs 파일에서 가져온 System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* 의 기본 구현입니다.
GetProperty 구현 시 기억해야 할 사항
System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* 구현에 다음과 같은 조건이 적용될 수 있습니다:
제공자 클래스를 정의할 때, Windows PowerShell 속성 제공자는 System.Management.Automation.Provider.ProviderCapabilities 열거에서 ExpandWildcards, Filter, Include, Exclude 등의 제공자 기능을 선언할 수 있습니다. 이 경우 System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* 메서드의 구현은 해당 메서드에 전달되는 경로가 지정된 능력의 요구사항을 충족하는지 확인해야 합니다. 이를 위해 메서드는 적절한 속성, 예를 들어 System.Management.Automation.Provider.CmdletProvider.Exclude* 및 System.Management.Automation.Provider.CmdletProvider.Include* 속성에 접근해야 합니다.
기본적으로 이 메서드의 오버라이드는 System.Management.Automation.Provider.CmdletProvider.Force* 속성이 로 설정
true되지 않는 한, 사용자에게 숨겨진 객체에 대한 리더를 불러와야 합니다. 경로가 사용자에게 숨겨진 항목을 나타내고 System.Management.Automation.Provider.CmdletProvider.Force* 가 로 설정false되어 있으면 오류가 작성되어야 합니다.
동적 매개변수를 Get-ItemProperty 커들렛에 부착하기
cmdlet은 Get-ItemProperty 런타임에 동적으로 지정되는 추가 매개변수를 요구할 수 있습니다. 이러한 동적 매개변수를 제공하기 위해 Windows PowerShell 속성 제공자는 System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* 메서드를 구현해야 합니다. 매개변수는 path 완전 자격화된 제공자 내부 경로를 나타내고, 매개변수는 providerSpecificPickList 명령줄에 입력된 공급자별 속성을 지정합니다. 이 매개변수는 속성이 명령어에 파이프되어 있다면 비 null 어 있을 수 있습니다. 이 경우, 이 메서드는 cmdlet 클래스나 System.Management.Automation.RuntimeDefinedParameterDictionary 객체와 유사한 파싱 속성을 가진 속성과 필드를 반환합니다. Windows PowerShell 런타임은 반환된 객체를 사용하여 명령어에 매개변수를 추가합니다.
다음은 Windows PowerShell에서 제공하는 TemplateProvider.cs 파일에서 가져온 System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* 의 기본 구현입니다.
속성 설정
속성을 설정하려면, Windows PowerShell 속성 제공자는 명령어 호출 Set-ItemProperty 을 지원하기 위해 System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* 메서드를 구현해야 합니다. 이 메서드는 지정된 경로에 항목의 하나 이상의 속성을 설정하고, 필요에 따라 제공된 속성을 덮어씁니다.
System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* 는 업데이트된 속성의 속성 가방을 나타내는 System.Management.Automation.PSObject 객체의 인스턴스도 작성합니다.
다음은 Windows PowerShell에서 제공하는 TemplateProvider.cs 파일에서 가져온 System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* 의 기본 구현입니다.
Set-ItemProperty 도입 시 기억해야 할 점들
System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* 구현에 다음과 같은 조건이 적용될 수 있습니다:
제공자 클래스를 정의할 때, Windows PowerShell 속성 제공자는 System.Management.Automation.Provider.ProviderCapabilities 열거에서 ExpandWildcards, Filter, Include, Exclude 등의 제공자 기능을 선언할 수 있습니다. 이 경우 System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* 메서드의 구현은 전달되는 경로가 지정된 능력의 요구사항을 충족하는지 확인해야 합니다. 이를 위해 메서드는 적절한 속성, 예를 들어 System.Management.Automation.Provider.CmdletProvider.Exclude* 및 System.Management.Automation.Provider.CmdletProvider.Include* 속성에 접근해야 합니다.
기본적으로 이 메서드의 오버라이드는 System.Management.Automation.Provider.CmdletProvider.Force* 속성이 로 설정
true되지 않는 한, 사용자에게 숨겨진 객체에 대한 리더를 불러와야 합니다. 경로가 사용자에게 숨겨진 항목을 나타내고 System.Management.Automation.Provider.CmdletProvider.Force* 가 로 설정false되어 있으면 오류가 작성되어야 합니다.System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* 메서드의 구현은 데이터 저장소에 변경을 하기 전에 System.Management.Automation.Provider.CmdletProvider.ShouldProcess를 호출하여 반환값을 검증해야 합니다. 이 방법은 파일 이름 변경과 같은 시스템 상태에 변화가 있을 때 연산 실행을 확인하는 데 사용됩니다. System.Management.Automation.Provider.CmdletProvider.ShouldProcess 는 변경할 리소스 이름을 사용자에게 전송하며, Windows PowerShell 런타임과 명령줄 설정이나 선호도 변수를 처리하여 무엇을 표시할지 결정합니다.
System.Management.Automation.Provider.CmdletProvider.ShouldProcess 호출 후
true, 잠재적으로 위험한 시스템 수정이 가능하다면, System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* 메서드가 System.Management.Automation.Provider.CmdletProvider.ShouldContinue 메서드를 호출해야 합니다. 이 방법은 사용자에게 추가 피드백을 받아 작업을 계속해야 한다는 확인 메시지를 보냅니다.
Set-ItemProperty 커들릿에 동적 파라미터 부착하기
cmdlet은 Set-ItemProperty 런타임에 동적으로 지정되는 추가 매개변수를 요구할 수 있습니다. 이러한 동적 매개변수를 제공하기 위해 Windows PowerShell 속성 제공자는 System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters* 메서드를 구현해야 합니다. 이 메서드는 cmdlet 클래스나 System.Management.Automation.RuntimeDefinedParameterDictionary 객체와 유사한 파싱 속성을 가진 속성과 필드를 반환합니다.
null 동적 매개변수를 추가하지 않을 경우 값을 반환할 수 있습니다.
다음은 Windows PowerShell에서 제공하는 TemplateProvider.cs 파일에서 가져온 System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* 의 기본 구현입니다.
정화 속성
속성을 삭제하려면, Windows PowerShell 속성 제공자는 명령어 호출 Clear-ItemProperty 을 지원하기 위해 System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* 메서드를 구현해야 합니다. 이 메서드는 지정된 경로에 위치한 항목에 대해 하나 이상의 속성을 설정합니다.
다음은 Windows PowerShell에서 제공하는 TemplateProvider.cs 파일에서 나온 System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* 의 기본 구현입니다.
ClearProperty 도입 시 기억해야 할 점
System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* 구현에 다음과 같은 조건이 적용될 수 있습니다:
제공자 클래스를 정의할 때, Windows PowerShell 속성 제공자는 System.Management.Automation.Provider.ProviderCapabilities 열거에서 ExpandWildcards, Filter, Include, Exclude 등의 제공자 기능을 선언할 수 있습니다. 이 경우 System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* 메서드의 구현은 전달되는 경로가 지정된 능력의 요구사항을 충족하는지 확인해야 합니다. 이를 위해 메서드는 적절한 속성, 예를 들어 System.Management.Automation.Provider.CmdletProvider.Exclude* 및 System.Management.Automation.Provider.CmdletProvider.Include* 속성에 접근해야 합니다.
기본적으로 이 메서드의 오버라이드는 System.Management.Automation.Provider.CmdletProvider.Force* 속성이 로 설정
true되지 않는 한, 사용자에게 숨겨진 객체에 대한 리더를 불러와야 합니다. 경로가 사용자에게 숨겨진 항목을 나타내고 System.Management.Automation.Provider.CmdletProvider.Force* 가 로 설정false되어 있으면 오류가 작성되어야 합니다.System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* 메서드의 구현은 데이터 저장소에 변경을 하기 전에 System.Management.Automation.Provider.CmdletProvider.ShouldProcess를 호출하여 반환 값을 검증해야 합니다. 이 방법은 시스템 상태 변경(예: 콘텐츠 삭제)이 이루어지기 전에 작업 실행을 확인하는 데 사용됩니다. System.Management.Automation.Provider.CmdletProvider.ShouldProcess 는 변경할 리소스 이름을 사용자에게 전송하며, Windows PowerShell 런타임은 명령줄 설정이나 선호도 변수를 고려하여 무엇을 표시할지 결정합니다.
System.Management.Automation.Provider.CmdletProvider.ShouldProcess 호출 후
true, 잠재적으로 위험한 시스템 수정이 가능하다면, System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* 메서드가 System.Management.Automation.Provider.CmdletProvider.ShouldContinue 메서드를 호출해야 합니다. 이 방법은 사용자에게 추가 피드백을 받도록 확인 메시지를 보내 잠재적으로 위험한 작업을 계속해야 함을 알립니다.
동적 매개변수를 Clear-ItemProperty 커들렛에 부착하기
cmdlet은 Clear-ItemProperty 런타임에 동적으로 지정되는 추가 매개변수를 요구할 수 있습니다. 이러한 동적 매개변수를 제공하기 위해 Windows PowerShell 속성 제공자는 System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* 메서드를 구현해야 합니다. 이 메서드는 cmdlet 클래스나 System.Management.Automation.RuntimeDefinedParameterDictionary 객체와 유사한 파싱 속성을 가진 속성과 필드를 반환합니다.
null 동적 매개변수를 추가하지 않을 경우 값을 반환할 수 있습니다.
다음은 Windows PowerShell에서 제공하는 TemplateProvider.cs 파일에서 가져온 System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* 의 기본 구현입니다.
Windows PowerShell 제공자 구축
Cmdlet, Providers, Hosting 애플리케이션 등록 방법을 참조하세요.