Разработка поставщика Windows PowerShell

если продукт или конфигурация предоставляет набор хранимых данных, например базу данных, которую пользователь хочет перемещать или просматривать, следует реализовать поставщик Windows PowerShell. кроме того, если ваш продукт предоставляет контейнер, даже если он не является многоуровневый, имеет смысл реализовать поставщик Windows PowerShell. например, может потребоваться реализовать поставщик контейнера Windows PowerShell, если команда командлета Copy, move, rename, New или remove имеет смысл как операция с продуктом или данными конфигурации.

Windows PowerShell Пути для указания поставщика

среда выполнения Windows PowerShell использует Windows PowerShell пути для доступа к соответствующему поставщику Windows PowerShell. Если командлет задает один из этих путей, среда выполнения знает, какой поставщик следует использовать для доступа к связанному хранилищу данных. Эти пути включают в себя пути с указанием диска, пути, определяемые поставщиком, пути прямого доступа поставщика и внутренние пути поставщика. каждый поставщик Windows PowerShell должен поддерживать один или несколько этих путей.

дополнительные сведения о Windows PowerShell путях см. в разделе как работает Windows PowerShell.

Определение пути Drive-Qualified

чтобы разрешить пользователю доступ к данным, расположенным на физическом диске, поставщик Windows PowerShell должен поддерживать путь, определенный диском. Этот путь начинается с имени диска, за которым следует двоеточие (:), например мидриве: \ абк\бар.

Определение пути Provider-Qualified

чтобы разрешить среде выполнения Windows PowerShell инициализировать и деинициализировать поставщик, поставщик Windows PowerShell должен поддерживать путь, определенный поставщиком. Например, файл FileSystem:: \ \ункшаре\абк\бар является квалифицированным поставщиком для поставщика FileSystem, предоставляемого Windows PowerShell.

Определение пути Provider-Direct

чтобы разрешить удаленный доступ к поставщику Windows PowerShell, он должен поддерживать прямой путь поставщика для передачи непосредственно поставщику Windows PowerShell для текущего расположения. например, поставщик Windows PowerShell реестра может использовать \ \сервер\регкэйпас в качестве прямого пути поставщика.

Определение пути Provider-Internal

чтобы предоставить командлету поставщика доступ к данным с помощью не Windows PowerShell программных интерфейсов (api), поставщик Windows PowerShell должен поддерживать внутренний путь поставщика. Этот путь указывается после "::" в пути, уточненном поставщиком. например, поставщик — внутренний путь для Windows PowerShell поставщика файловой системы — \ \ункшаре\абк\бар.

Изменение сохраненных данных

При переопределении методов, изменяющих базовое хранилище данных, всегда вызывайте метод System. Management. Automation. Provider. кмдлетпровидер. вритеитемобжект * с самой последней версией элемента, измененного этим методом. Инфраструктура поставщика определяет, нужно ли передавать объект item в конвейер, например, когда пользователь указывает параметр-PassThru. Если получение наиболее актуального элемента является дорогостоящей операцией (с учетом производительности), можно протестировать свойство Context. PassThru, чтобы определить, действительно ли нужно писать получившийся элемент.

Выбор базового класса для поставщика

Windows PowerShell предоставляет ряд базовых классов, которые можно использовать для реализации собственного поставщика Windows PowerShell. При проектировании поставщика выберите базовый класс, описанный в этом разделе, который наиболее подходит для ваших требований.

каждый базовый класс Windows PowerShell поставщика делает доступным набор командлетов. В этом разделе описываются командлеты, но они не описывают их параметры.

с помощью состояния сеанса среда выполнения Windows PowerShell делает несколько командлетов location доступными для определенных поставщиков Windows PowerShell, таких как Get-Location Set-Location командлеты,, Pop-Location и Push-Location . Get-HelpДля получения сведений об этих командлетах расположения можно использовать командлет.

Базовый класс Кмдлетпровидер

класс System. Management. Automation. Provider. кмдлетпровидер определяет базовый поставщик Windows PowerShell. этот класс поддерживает объявление поставщика и предоставляет ряд свойств и методов, доступных для всех поставщиков Windows PowerShell. Класс вызывается Get-PSProvider командлетом для вывода списка всех доступных поставщиков для сеанса. Реализация этого командлета предоставляется состоянием сеанса.

Примечание

поставщики Windows PowerShell доступны для всех областей языка Windows PowerShell.

Базовый класс Дривекмдлетпровидер

класс System. Management. Automation. Provider. дривекмдлетпровидер определяет поставщик Windows PowerShellного диска, который поддерживает операции по добавлению новых дисков, удалению существующих дисков и инициализации дисков по умолчанию. например, поставщик FileSystem, предоставляемый Windows PowerShell, инициализирует диски для всех подключенных томов, таких как жесткие диски и дисководы CD/DVD.

Этот класс является производным от базового класса System. Management. Automation. Provider. кмдлетпровидер . В следующей таблице перечислены командлеты, предоставляемые этим классом. Помимо указанных выше, Get-PSDrive командлет (предоставленный состоянием сеанса) является связанным командлетом, который используется для получения доступных дисков.

Командлет Определение
New-PSDrive Создание нового диска для сеанса и потоковая передача сведений о нем.
Remove-PSDrive Удаляет диск из сеанса.

Базовый класс Итемкмдлетпровидер

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

Командлет Определение
Clear-Item Очищает текущее содержимое элементов в указанном расположении и заменяет его значением "Clear", заданным поставщиком. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.
Get-Item Извлекает элементы из указанного расположения и передает в поток результирующие объекты.
Invoke-Item Вызывает действие по умолчанию для элемента по указанному пути.
Set-Item Задает элемент в указанном расположении с указанным значением. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.
Resolve-Path разрешает подстановочные знаки для Windows PowerShell пути и сведений о пути к потокам.
Test-Path Проверяет по указанному пути и возвращает, true если он существует, и false в противном случае. Этот командлет реализуется для поддержки IsContainer параметра для метода System. Management. Automation. Provider. Кмдлетпровидер. вритеитемобжект * .

Базовый класс Контаинеркмдлетпровидер

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

Этот класс является производным от базового класса System. Management. Automation. Provider. итемкмдлетпровидер . В следующей таблице описаны командлеты, реализуемые этим классом.

Командлет Определение
Copy-Item Копирует элементы из одного расположения в другое. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.
Get-Childitem Извлекает дочерние элементы в указанном расположении и передает их в поток как объекты.
New-Item Создает новые элементы в указанном расположении и осуществляет потоковую передачу результирующего объекта.
Remove-Item Удаляет элементы из указанного расположения.
Rename-Item Переименовывает элемент в указанном расположении. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.

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

Командлет Определение
Combine-Path Объединяет два пути в один путь с помощью разделителя, зависящего от поставщика, между путями. Этот командлет осуществляет потоковую передачу строк.
Move-Item Перемещает элементы в указанное место. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.

Связанный командлет — это базовый командлет Parse-Path, предоставляемый Windows PowerShell. этот командлет можно использовать для синтаксического анализа пути Windows PowerShell для поддержки Parent параметра. Он создает потоковую строку родительского пути.

Выберите интерфейсы поставщика для поддержки

помимо наследования от одного из базовых классов Windows PowerShell, поставщик Windows PowerShell может поддерживать другие функции путем наследования от одного или нескольких из следующих интерфейсов поставщика. В этом разделе определяются эти интерфейсы и командлеты, поддерживаемые каждым из них. Он не описывает параметры для командлетов, поддерживаемых интерфейсом. Сведения о параметрах командлета доступны в Интернете с помощью Get-Command Get-Help командлетов и.

иконтенткмдлетпровидер

Интерфейс System. Management. Automation. Provider. иконтенткмдлетпровидер определяет поставщик содержимого, который выполняет операции с содержимым элемента данных. В следующей таблице перечислены командлеты, предоставляемые этим интерфейсом.

Командлет Определение
Add-Content Добавляет указанную длину значений к содержимому указанного элемента. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.
Clear-Content Задает для содержимого указанного элемента значение "Clear". Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.
Get-Content Извлекает содержимое указанных элементов и передает в поток результирующие объекты.
Set-Content Заменяет существующее содержимое для указанных элементов. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.

ипропертикмдлетпровидер

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

Примечание

PathПараметр в этих командлетах указывает путь к элементу, а не определяет свойство.

Командлет Определение
Clear-ItemProperty Задает для свойств указанных элементов значение "Clear". Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.
Get-ItemProperty Извлекает свойства из указанных элементов и передает в поток результирующие объекты.
Set-ItemProperty Задает свойства указанных элементов с указанными значениями. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.

идинамикпропертикмдлетпровидер

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

Командлет Определение
Copy-ItemProperty Копирует свойство из указанного элемента в другой элемент. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.
Move-ItemProperty Перемещает свойство из указанного элемента в другой элемент. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.
New-ItemProperty Создает свойство для указанных элементов и передает в поток результирующие объекты.
Remove-ItemProperty Удаляет свойство для указанных элементов.
Rename-ItemProperty Переименовывает свойство указанных элементов. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр.

исекуритидескрипторкмдлетпровидер

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

Командлет Определение
Get-Acl Извлекает сведения, содержащиеся в списке управления доступом (ACL), который является частью дескриптора безопасности, используемого для защиты ресурсов операционной системы, например файла или объекта.
Set-Acl Задает сведения для ACL. Он представлен в виде экземпляра System. Security. AccessControl. обжектсекурити для элементов, указанных для указанного пути. этот командлет может задавать сведения о файлах, ключах и подразделах в реестре или любом другом элементе поставщика, если поставщик Windows PowerShell поддерживает настройку сведений о безопасности.

См. также:

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

как работает Windows PowerShell

Пакет SDK для Windows PowerShell