Поделиться через


Создание провайдера свойств Windows PowerShell

В этой теме описывается, как создать провайдер, который позволяет пользователю управлять свойствами элементов в хранилище данных. В результате такой тип провайдера называют поставщиком свойств Windows PowerShell. Например, провайдер реестра, предоставляемый Windows PowerShell, обрабатывает значения ключей реестра как свойства элемента ключа реестра. Этот тип провайдера должен добавить интерфейс System.Management.Automation.Provider.IPropertyCmdletProvider к реализации класса .NET.

Замечание

Windows PowerShell предоставляет шаблонный файл, который можно использовать для разработки провайдера Windows PowerShell. Файл TemplateProvider.cs доступен в Microsoft Windows Software Development Kit for Windows Vista и компонентах выполнения .NET Framework 3.0. Инструкции по скачиванию смотрите в разделе «Как установить Windows PowerShell» и «Скачать Windows PowerShell SDK». Загруженный шаблон доступен в каталоге <PowerShell Samples> . Вам следует сделать копию этого файла и использовать его для создания нового провайдера Windows PowerShell, устранив ненужные функции. Для получения дополнительной информации о других реализациях провайдеров Windows PowerShell см. раздел «Проектирование вашего провайдера Windows PowerShell».

Caution

Методы вашего поставщика свойств должны записывать любые объекты с помощью метода System.Management.Automation.Provider.CmdletProvider.Writepropertyobject* .

Определение провайдера Windows PowerShell

Поставщик свойств должен создать класс .NET, поддерживающий интерфейс System.Management.Automation.Provider.IPropertyCmdletProvider . Вот объявление класса по умолчанию из файла TemplateProvider.cs, предоставленного Windows PowerShell.

Определение базовой функциональности

Интерфейс System.Management.Automation.Provider.IPropertyCmdletProvider может быть подключён к любому из базовых классов провайдеров, за исключением класса System.Management.Automation.Provider.DriveCmdletProvider. Добавьте базовую функциональность, требуемую для используемого вами базового класса. Для получения дополнительной информации о базовых классах см. раздел «Проектирование вашего провайдера Windows PowerShell».

Извлечение свойств

Для получения свойств провайдер должен реализовать метод System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* для поддержки вызовов из Get-ItemProperty cmdlet. Этот метод извлекает свойства элемента, расположенного на указанном внутреннем пути провайдера (полностью квалифицированный).

Параметр providerSpecificPickList указывает, какие свойства нужно извлекать. Если этот параметр пуст null или пуст, метод должен получить все свойства. Кроме того, System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* записывает экземпляр объекта System.Management.Automation.PSObject , который представляет пакет свойств с полученными свойствами. Метод не должен ничего возвращать.

Рекомендуется, чтобы реализация System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* поддерживала wildcard расширение имён свойств для каждого элемента в списке выбора. Для этого используйте класс System.Management.Automation.WildcardPattern для сопоставления дикой карты.

Вот стандартная реализация System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* из файла TemplateProvider.cs, предоставленного Windows PowerShell.

Что нужно помнить при внедрении GetProperty

К вашей реализации System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* могут применяться следующие условия:

Прикрепление динамических параметров к командоустройству Get-ItemProperty

Cmdlet Get-ItemProperty может потребовать дополнительных параметров, которые динамически задаются во время выполнения. Для предоставления этих динамических параметров поставщик свойств Windows PowerShell должен реализовать метод System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* . Параметр указывает на полностью квалифицированный внутренний путь провайдера, а providerSpecificPickList параметр указывает свойства, специфичные для провайдера, path введённые в командной строке. Этот параметр может быть null или пустым, если свойства передаются в cmdlet. В этом случае этот метод возвращает объект с свойствами и полями с атрибутами разбора, похожими на класс cmdlet или объект System.Management.Automation.RuntimeDefinedParameterDictionary . Runtime Windows PowerShell использует возвращённый объект для добавления параметров в cmdlet.

Вот стандартная реализация System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* из TemplateProvider.cs файла, предоставленного Windows PowerShell.

Установка свойств

Для установки свойств провайдер свойств Windows PowerShell должен реализовать метод System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* для поддержки вызовов из Set-ItemProperty cmdlet. Этот метод устанавливает одно или несколько свойств элемента на указанном пути и перезаписывает предоставленные свойства по мере необходимости. System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* также записывает экземпляр объекта System.Management.Automation.PSObject , который представляет пакет свойств обновлённых свойств.

Вот стандартная реализация System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* из TemplateProvider.cs файла, предоставленного Windows PowerShell.

Что стоит помнить о внедрении Set-ItemProperty

К реализации System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* могут применяться следующие условия:

Прикрепление динамических параметров для командора Set-ItemProperty

Cmdlet Set-ItemProperty может потребовать дополнительных параметров, которые динамически задаются во время выполнения. Для предоставления этих динамических параметров поставщик свойств Windows PowerShell должен реализовать метод System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters* . Этот метод возвращает объект с свойствами и полями с атрибутами разбора, похожими на класс cmdlet или объект System.Management.Automation.RuntimeDefinedParameterDictionary . null Значение может быть возвращено, если динамические параметры не добавляются.

Вот стандартная реализация System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* из TemplateProvider.cs файла, предоставленного Windows PowerShell.

Чистящие свойства

Для очистки свойств провайдер свойств Windows PowerShell должен реализовать метод System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* для поддержки вызовов из cmdlet Clear-ItemProperty . Этот метод задаёт одно или несколько свойств для элемента, расположенного на указанном пути.

Вот стандартная реализация System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* из файла TemplateProvider.cs, предоставленного Windows PowerShell.

Что нужно помнить при внедрении ClearProperty

К вашей реализации System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* могут применяться следующие условия:

Прикрепление динамических параметров к командоустройству Clear-ItemProperty

Cmdlet Clear-ItemProperty может потребовать дополнительных параметров, которые динамически задаются во время выполнения. Для предоставления этих динамических параметров поставщик свойств Windows PowerShell должен реализовать метод System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* . Этот метод возвращает объект с свойствами и полями с атрибутами разбора, похожими на класс cmdlet или объект System.Management.Automation.RuntimeDefinedParameterDictionary . null Значение может быть возвращено, если динамические параметры не добавляются.

Вот стандартная реализация System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* из файла TemplateProvider.cs, предоставленного Windows PowerShell.

Создание провайдера Windows PowerShell

Посмотрите, как зарегистрировать cmdlet, провайдеров и хост-приложения.

См. также

Провайдер Windows PowerShell

Спроектируйте своего провайдера Windows PowerShell

Расширение типов объектов и форматирование

Как зарегистрировать cmdlet, провайдеров и хост-приложений