Создание поставщика свойств Windows PowerShell
В этом разделе описывается создание поставщика, который позволяет пользователю управлять свойствами элементов в хранилище данных. как следствие, этот тип поставщика называется поставщиком свойств Windows PowerShell. например, поставщик реестра, предоставляемый Windows PowerShell, обрабатывает значения разделов реестра как свойства элемента раздела реестра. Поставщик этого типа должен добавить интерфейс System. Management. Automation. Provider. ипропертикмдлетпровидер в реализацию класса .NET.
Примечание
Windows PowerShell предоставляет файл шаблона, который можно использовать для разработки Windows PowerShell поставщика. файл темплатепровидер. cs доступен в пакете Microsoft Windows Software Development Kit для компонентов среды выполнения Windows Vista и платформа .NET Framework 3,0. инструкции по загрузке см. в статье установка Windows PowerShell и загрузка пакета SDK для Windows PowerShell. Скачанный шаблон доступен в <PowerShell Samples> каталоге. необходимо создать копию этого файла и использовать копию для создания нового поставщика Windows PowerShell, удалив все ненужные функции. дополнительные сведения о других реализациях поставщиков Windows PowerShell см. в разделе разработка поставщика Windows PowerShell.
Внимание!
Методы поставщика свойств должны записывать любые объекты с помощью метода System. Management. Automation. Provider. кмдлетпровидер. вритепропертйобжект * .
определение поставщика Windows PowerShell
Поставщик свойств должен создать класс .NET, который поддерживает интерфейс System. Management. Automation. Provider. ипропертикмдлетпровидер . Ниже приведено объявление класса по умолчанию из файла Темплатепровидер. cs, предоставленного Windows PowerShell.
Определение базовых функций
Интерфейс System. Management. Automation. Provider. ипропертикмдлетпровидер можно подключить к любому из базовых классов поставщика, за исключением класса System. Management. Automation. Provider. дривекмдлетпровидер . Добавьте базовую функциональность, необходимую базовому классу, который вы используете. дополнительные сведения о базовых классах см. в разделе разработка поставщика Windows PowerShell.
Получение свойств
Чтобы получить свойства, поставщик должен реализовать метод System. Management. Automation. Provider. ипропертикмдлетпровидер., свойство * для поддержки вызовов из Get-ItemProperty
командлета. Этот метод получает свойства элемента, расположенного по указанному поставщику — внутренний путь (полный).
providerSpecificPickList
Параметр указывает, какие свойства следует извлечь. Если этот параметр имеет значение null
или пуст, метод должен получить все свойства. Кроме того, System. Management. Automation. Provider. ипропертикмдлетпровидер. GetObject * записывает экземпляр объекта System. Management. Automation. PSObject , представляющий контейнер свойств извлеченных свойств. Метод должен возвращать Nothing.
Рекомендуется, чтобы реализация System. Management. Automation. Provider. ипропертикмдлетпровидер.-Property * поддерживала подстановочное расширение имен свойств для каждого элемента в списке выбора. Для этого используйте класс System. Management. Automation. вилдкардпаттерн , чтобы выполнить сопоставление шаблонов с подстановочными знаками.
Ниже приведена реализация класса System. Management. Automation. Provider. ипропертикмдлетпровидер.-Property * по умолчанию из файла темплатепровидер. cs, предоставленного Windows PowerShell.
Вопросы, которые следует учитывать при реализации функции Property
Следующие условия могут быть применимы к реализации System. Management. Automation. Provider. ипропертикмдлетпровидер. onproperty *:
при определении класса поставщика Windows PowerShell поставщик свойств может объявлять возможности поставщика експандвилдкардс, Filter, Include или Exclude из перечисления System. Management. Automation. provider. провидеркапабилитиес . В таких случаях в реализации метода System. Management. Automation. Provider. ипропертикмдлетпровидер. WebMethod * необходимо убедиться, что путь, передаваемый в метод, соответствует требованиям указанных возможностей. Для этого метод должен получить доступ к соответствующему свойству, например к свойствам System. Management. Automation. Provider. кмдлетпровидер. Exclude * и System. Management. Automation. Provider. кмдлетпровидер. include * .
По умолчанию переопределения этого метода не должны извлекать модуль чтения для объектов, которые скрыты от пользователя, если свойство System. Management. Automation. Provider. кмдлетпровидер. Force * не имеет значение
true
. Если путь представляет элемент, который скрыт от User, а параметр System. Management. Automation. Provider. кмдлетпровидер. Force * имеет значение, то ошибка должна быть записанаfalse
.
Присоединение динамических параметров к командлету Get-ItemProperty
Get-ItemProperty
Командлету могут потребоваться дополнительные параметры, заданные динамически во время выполнения. чтобы предоставить эти динамические параметры, поставщик свойств Windows PowerShell должен реализовать метод System. Management. Automation. provider. ипропертикмдлетпровидер. жетпропертидинамикпараметерс * . path
Параметр указывает полный внутренний путь поставщика, а providerSpecificPickList
параметр задает свойства, зависящие от поставщика, которые указаны в командной строке. Этот параметр может быть null
или пустым, если свойства передаются в командлет. В этом случае этот метод возвращает объект со свойствами и полями с атрибутами синтаксического анализа, похожими на класс командлета или объект System. Management. Automation. рунтимедефинедпараметердиктионари . среда выполнения Windows PowerShell использует возвращаемый объект для добавления параметров в командлет.
Ниже приведена реализация класса System. Management. Automation. Provider. ипропертикмдлетпровидер. жетпропертидинамикпараметерс * по умолчанию из файла темплатепровидер. cs, предоставленного Windows PowerShell.
Установка свойств
чтобы задать свойства, поставщик свойств Windows PowerShell должен реализовать метод System. Management. Automation. provider. ипропертикмдлетпровидер. Setproperty * для поддержки вызовов из Set-ItemProperty
командлета. Этот метод задает одно или несколько свойств элемента по указанному пути и перезаписывает указанные свойства в соответствии с требованиями.
System. Management. Automation. Provider. ипропертикмдлетпровидер. SetProperty * также записывает экземпляр объекта System. Management. Automation. PSObject , представляющий контейнер свойств обновленных свойств.
Ниже приведена реализация System. Management. Automation. Provider. ипропертикмдлетпровидер. SetProperty * по умолчанию из файла темплатепровидер. cs, предоставленного Windows PowerShell.
Вопросы, связанные с реализацией Set-ItemProperty
Следующие условия могут применяться к реализации System. Management. Automation. Provider. ипропертикмдлетпровидер. SetProperty *:
при определении класса поставщика Windows PowerShell поставщик свойств может объявлять возможности поставщика експандвилдкардс, Filter, Include или Exclude из перечисления System. Management. Automation. provider. провидеркапабилитиес . В этих случаях реализация метода System. Management. Automation. Provider. ипропертикмдлетпровидер. SetProperty * должна гарантировать, что путь, передаваемый в метод, соответствует требованиям указанных возможностей. Для этого метод должен получить доступ к соответствующему свойству, например к свойствам System. Management. Automation. Provider. кмдлетпровидер. Exclude * и System. Management. Automation. Provider. кмдлетпровидер. include * .
По умолчанию переопределения этого метода не должны извлекать модуль чтения для объектов, которые скрыты от пользователя, если свойство System. Management. Automation. Provider. кмдлетпровидер. Force * не имеет значение
true
. Если путь представляет элемент, который скрыт от User, а параметр System. Management. Automation. Provider. кмдлетпровидер. Force * имеет значение, то ошибка должна быть записанаfalse
.Реализация метода System. Management. Automation. Provider. ипропертикмдлетпровидер. SetProperty * должна вызывать System. Management. Automation. Provider. кмдлетпровидер. ShouldProcess и проверять его возвращаемое значение перед внесением любых изменений в хранилище данных. Этот метод используется для подтверждения выполнения операции при внесении изменений в состояние системы, например при переименовании файлов. System. Management. Automation. Provider. кмдлетпровидер. ShouldProcess отправляет имя ресурса, который будет изменен пользователю, с помощью Windows PowerShell среды выполнения и обрабатывая параметры командной строки или привилегированные переменные в определении того, что следует отображать.
После вызова метода System. Management. Automation. Provider. кмдлетпровидер. ShouldProcess возвращает
true
, если возможно потенциально опасное изменение системы, метод System. Management. Automation. Provider. ипропертикмдлетпровидер. SetProperty * должен вызвать метод System. Management. Automation. Provider. кмдлетпровидер. ShouldContinue . Этот метод отправляет пользователю сообщение с подтверждением, чтобы разрешить дополнительный отзыв, чтобы указать, что операция должна быть продолжена.
Присоединение динамических параметров для командлета Set-ItemProperty
Set-ItemProperty
Командлету могут потребоваться дополнительные параметры, заданные динамически во время выполнения. чтобы предоставить эти динамические параметры, поставщик свойств Windows PowerShell должен реализовать метод System. Management. Automation. provider. ипропертикмдлетпровидер. сетпропертидинамикпараметерс * . Этот метод возвращает объект со свойствами и полями с атрибутами синтаксического анализа, похожими на класс командлета или объект System. Management. Automation. рунтимедефинедпараметердиктионари . null
Значение может быть возвращено, если не нужно добавлять динамические параметры.
Ниже приведена реализация класса System. Management. Automation. Provider. ипропертикмдлетпровидер. жетпропертидинамикпараметерс * по умолчанию из файла темплатепровидер. cs, предоставленного Windows PowerShell.
Очистка свойств
чтобы очистить свойства, поставщик свойств Windows PowerShell должен реализовать метод System. Management. Automation. provider. ипропертикмдлетпровидер. клеарпроперти * для поддержки вызовов из Clear-ItemProperty
командлета. Этот метод задает одно или несколько свойств элемента, расположенного по указанному пути.
Ниже приведена реализация класса System. Management. Automation. Provider. ипропертикмдлетпровидер. клеарпроперти * по умолчанию из файла темплатепровидер. cs, предоставленного Windows PowerShell.
Важно помнить о реализации Клеарпроперти
Следующие условия могут применяться к реализации System. Management. Automation. Provider. ипропертикмдлетпровидер. клеарпроперти *:
при определении класса поставщика Windows PowerShell поставщик свойств может объявлять возможности поставщика експандвилдкардс, Filter, Include или Exclude из перечисления System. Management. Automation. provider. провидеркапабилитиес . В таких случаях реализация метода System. Management. Automation. Provider. ипропертикмдлетпровидер. клеарпроперти * должна обеспечить соответствие пути, переданного методу, требованиям указанных возможностей. Для этого метод должен получить доступ к соответствующему свойству, например к свойствам System. Management. Automation. Provider. кмдлетпровидер. Exclude * и System. Management. Automation. Provider. кмдлетпровидер. include * .
По умолчанию переопределения этого метода не должны извлекать модуль чтения для объектов, которые скрыты от пользователя, если свойство System. Management. Automation. Provider. кмдлетпровидер. Force * не имеет значение
true
. Если путь представляет элемент, который скрыт от User, а параметр System. Management. Automation. Provider. кмдлетпровидер. Force * имеет значение, то ошибка должна быть записанаfalse
.Реализация метода System. Management. Automation. Provider. ипропертикмдлетпровидер. клеарпроперти * должна вызывать System. Management. Automation. Provider. кмдлетпровидер. ShouldProcess и проверять его возвращаемое значение перед внесением любых изменений в хранилище данных. Этот метод используется для подтверждения выполнения операции до внесения изменений в состояние системы, например для очистки содержимого. System. Management. Automation. Provider. кмдлетпровидер. ShouldProcess отправляет имя ресурса, который будет изменен пользователю, с Windows PowerShell среда выполнения учитывает все параметры командной строки или привилегированные переменные в определении того, что следует отображать.
После вызова метода System. Management. Automation. Provider. кмдлетпровидер. ShouldProcess возвращает значение
true
, если возможно потенциально опасное изменение системы, метод System. Management. Automation. Provider. ипропертикмдлетпровидер. клеарпроперти * должен вызвать метод System. Management. Automation. Provider. кмдлетпровидер. ShouldContinue . Этот метод отправляет пользователю сообщение с подтверждением, чтобы разрешить дополнительный отзыв, чтобы указать, что потенциально опасное действие должно быть продолжено.
Присоединение динамических параметров к командлету Clear-ItemProperty
Clear-ItemProperty
Командлету могут потребоваться дополнительные параметры, заданные динамически во время выполнения. чтобы предоставить эти динамические параметры, поставщик свойств Windows PowerShell должен реализовать метод System. Management. Automation. provider. ипропертикмдлетпровидер. клеарпропертидинамикпараметерс * . Этот метод возвращает объект со свойствами и полями с атрибутами синтаксического анализа, похожими на класс командлета или объект System. Management. Automation. рунтимедефинедпараметердиктионари . null
Значение может быть возвращено, если не нужно добавлять динамические параметры.
Ниже приведена реализация класса System. Management. Automation. Provider. ипропертикмдлетпровидер. клеарпропертидинамикпараметерс * по умолчанию из файла темплатепровидер. cs, предоставленного Windows PowerShell.
создание поставщика Windows PowerShell
См. раздел Регистрация командлетов, поставщиков и ведущих приложений.
См. также:
разработка поставщика Windows PowerShell