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


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

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

Примечание.

Windows PowerShell предоставляет файл шаблона, который можно использовать для разработки поставщика Windows PowerShell. Файл TemplateProvider.cs доступен в пакете средств разработки программного обеспечения Microsoft Windows для Windows Vista и .NET Framework 3.0. Инструкции по скачиванию см. в статье Установка Windows PowerShell и скачивание пакета SDK для Windows PowerShell. Скачанный шаблон доступен в каталоге>примеров PowerShell<. Необходимо сделать копию этого файла и использовать копию для создания нового поставщика Windows PowerShell, удаляя все функциональные возможности, которые не требуются. Дополнительные сведения о других реализациях поставщика Windows PowerShell см. в статье Проектированиепоставщика Windows PowerShell.

Осторожность

Методы поставщика свойств должны записывать любые объекты с помощью метода System.Management.Automation.Provider.КомандлетProvider.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. Этот метод извлекает свойства элемента, расположенного по указанному внутреннему пути поставщика (полностью).

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

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

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

Сведения о реализации GetProperty

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

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

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

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

Настройка свойств

Чтобы задать свойства, поставщик свойств Windows PowerShell должен реализовать метод System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* для поддержки вызовов из командлета Set-ItemProperty. Этот метод задает одно или несколько свойств элемента по указанному пути и перезаписывает предоставленные свойства по мере необходимости. 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

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

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

Очистка свойств

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

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

Важно помнить о реализации ClearProperty

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

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

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

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

Создание поставщика Windows PowerShell

См. , как зарегистрировать командлеты, поставщики и хост-приложения.

См. также

поставщик Windows PowerShell

проектирование поставщика Windows PowerShell

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

Регистрация командлетов, поставщиков и ведущих приложений